【问题标题】:Unity2D - messed up sprite while accesing it from scriptUnity 2D - 从脚本访问时搞砸了精灵
【发布时间】:2016-02-15 20:06:22
【问题描述】:

我有 64x64 的树纹理:

但是输出给了我这个(黑色混乱的对象是我的树)

如果我将精灵拖到编辑器中,它会按原样呈现(创建新的游戏对象)。但我通过脚本访问它:

public Sprite treesIcon;

SpriteRenderer sr;

TileTypeHandler typeHandler;

void Start () {
    sr = GetComponent<SpriteRenderer>();
}


void Update () {
    switch(typeHandler.tileType) /// nevermind enum, its edited
    {
        case TileType.Woods:
            {
                sr.sprite = treesIcon;
                break;
            }
    }
}

重点是动态改变纹理。

谁能解释一下这种行为?关于精灵和纹理,我有什么遗漏吗?我该如何解决?

【问题讨论】:

  • 你能贴一张GameObject的编辑器(运行时)的截图吗?你有精灵集。我认为这是着色器或 Alpha 通道的问题。
  • 其实你是对的。着色器有问题!非常感谢!

标签: c# unity3d textures texture2d


【解决方案1】:

结果看起来SpriteRenderer 使用了错误的shader,将材质更改为Sprites-Default,它应该可以工作。

如果您有彩色图像,您会立即发现有问题,因为它们也会显示为黑色。

【讨论】:

  • 就是这样。我有点尴尬,因为我没有注意到。
  • @BobT。你不必。为什么你认为我知道答案……因为我也这样做了!
猜你喜欢
  • 2021-09-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-10
  • 1970-01-01
  • 2016-05-18
  • 2011-08-17
  • 2010-09-05
相关资源
最近更新 更多