【问题标题】:Changing Sprite and keeping the same size更改 Sprite 并保持相同大小
【发布时间】: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 组件,它都是自动的

标签: c# unity3d 2d


【解决方案1】:
puzzle.Sprite = Sprite.Create(t, new Rect(0, 0, t.width, t.height),Vector2.one/2,256);

最后一个 int 用于 pixelperUnity,它是改变大小的原因。 它已在我的项目中修复, 我的默认 pixelPerUnit=256 和统一 default = 100 所以它大 2.56 倍 告诉我它是否有帮助

【讨论】:

    【解决方案2】:

    如何修改宽高:使用RectTransform.sizeDelta

    此类脚本的示例

    Vector3 originalDelta = imageToSwap.rectTransform.sizeDelta; //get the original Image's rectTransform's size delta and store it in a Vector called originalDelta
    imageToSwap.sprite = newSprite; //swap out the new image
    imageToSwap.rectTransform.sizeDelta = originalDelta; //size it as the old one was.
    

    More about sizeDeltas here

    【讨论】:

      【解决方案3】:

      我会在脚本中公开两个公共变量,并带有一些默认值:

      public int placeholderWidth = 80;
      public int placeholderHeight = 80;
      

      然后,每当您更改精灵时,请将宽度和高度设置为那些预定义的值。

      【讨论】:

      • 除了我不知道如何设置宽度和高度。我已经玩了几个小时的 localscale 和 ratios 并没有得到完美
      • 不完整的答案
      猜你喜欢
      • 2016-06-17
      • 2014-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多