c# – Unity在运行时的精灵渲染器中更改精灵

在团结中我使用脚本随机创建攻击你的玩家的敌人.为此,我需要插入一个游戏对象,添加一个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");

图像本身可能有问题吗?

最佳答案 首先,我建议使用某种配置对象进行有组织和独立于名称的资产存储.在这种情况下,您可以在该配置中注册所有使用过的图形文件,并通过调用类似“Config.SpritesData.GetEnemySprite(EnemyType.Orc)”之类的内容来获取所需的资产.

但是现在你可以从Assets文件夹中检查精灵的路径开始,因为Resources.Load只能处理Resources文件夹中的文件.如果路径正确,资产导入类型也值得检查,因为Load<>()方法将其强制转换为Sprite,因此如果您的资产未作为精灵导入,则投射结果可能为null.

让我知道,如果你检查了这两件事,它仍然无法工作,我会给它一些更多的想法.

点赞