Unity在运行时精灵渲染器中更改精灵

时间:2016-05-07 11:02:25

标签: c# unity3d

在团结中我使用脚本随机创建攻击你的玩家的敌人。为此,我需要 插入游戏对象 添加SpriteRenderer 名称它 ,然后 给它一个纹理 ,它位于资产

这是我的代码:

GameObject sprGameObj = new GameObject();
sprGameObj.AddComponent<SpriteRenderer>();
sprGameObj.name = "Enemy";

sprGameObj.GetComponent<SpriteRenderer>().sprite = Resources.Load<Sprite>("EnemyImage");

代码插入游戏对象,添加精灵渲染器并命名它,但不会将图像“EnemyImage”添加到精灵。我已经在网上看了,但是其他人都在使用与我类似的代码。

有人知道解决方案吗?

我在C#编码。

更新

我尝试将此代码放在已存在的精灵中,它只删除了它的图像:

gameObject.GetComponent<SpriteRenderer>().sprite = Resources.Load<Sprite>("EnemyImage");

图像本身可能有问题吗?

1 个答案:

答案 0 :(得分:2)

首先,我建议使用某种配置对象进行有组织且与名称无关的资产存储。在这种情况下,您可以在该配置中注册所有使用过的图形文件,并通过调用类似“Config.SpritesData.GetEnemySprite(EnemyType.Orc)”之类的内容来获取所需的资产。 但是现在你可以从Assets文件夹中检查精灵的路径开始,因为Resources.Load只能处理Resources文件夹中的文件。如果路径正确,资产导入类型也值得检查,因为Load&lt;&gt;()方法将其强制转换为Sprite,因此如果您的资产未作为精灵导入,则投射结果可能为null。 让我知道如果你检查了这两件事情它仍然无法工作,我会给它一些更多的想法。

相关问题