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

在团结中我使用脚本随机创建攻击你的玩家的敌人 . 要做到这一点,我需要 insert a game objectadd a SpriteRenderername it ,然后 assets ,这是 assets .

这是我的代码:

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

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

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

有谁知道解决方案?

I am coding in C#.


Update:

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

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

图像本身可能有问题吗?

回答(1)

2 years ago

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