【发布时间】:2014-06-14 20:37:30
【问题描述】:
我正在使用统一的 2d 功能编写游戏。
我正在为玩家角色设计一种物品栏,我有一个游戏对象,里面有许多占位符图像。目的是当我实际加载这个游戏对象时,我将替换占位符图像的精灵,然后显示我想要的。
我的问题是当我使用这样的代码更改精灵时
var ren = item1.GetComponentInChildren<SpriteRenderer>();
ren.sprite = Resources.Load<Sprite>("DifferentSprite");
加载的图像是正确的,但是缩放适用于新的精灵。问题是这些精灵都有不同的大小。因此,虽然原始占位符图像占据了一个小正方形,但根据实际 png 的大小,替换图像可能很小或足够大以覆盖整个屏幕。
我基本上希望精灵替换另一个并缩放自身,使其具有与占位符图像相同的宽度和高度。我该怎么做?
编辑 - 我尝试过使用比率。它仍然不能完美地工作,但它已经接近了。
var ren = item1.GetComponentInChildren<SpriteRenderer>();
Vector2 beforeSize = ren.transform.renderer.bounds.size;
ren.sprite = Resources.Load<Sprite>("Day0/LampOn");
Vector2 spriteSize = ren.sprite.bounds.size;
//Get the ratio between the wanted size and the sprite's size ratios
Vector3 scaleMultiplier = new Vector3 (beforeSize.x/spriteSize.x, beforeSize.y/spriteSize.y);
//Multiple the scale by this multiplier
ren.transform.localScale = new Vector3(ren.transform.localScale.x * scaleMultiplier.x,ren.transform.localScale.y * scaleMultiplier.y);
【问题讨论】:
-
您从占位符图像中获取宽度和高度属性,并将实际图像宽度和高度设置为...或者您可以创建一组全新的调整大小的图像,专门用于您的库存
-
我不知道如何设置宽度和高度,除了玩localScale
-
你只需使用 size fitter 组件,它都是自动的