【问题标题】:Unity Change sprite in sprite renderer in RuntimeUnity 在运行时更改精灵渲染器中的精灵
【发布时间】:2016-09-02 10:24:32
【问题描述】:

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

这是我的代码:

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");

会不会是图片本身有问题?

【问题讨论】:

    标签: c# unity3d


    【解决方案1】:

    首先,我建议使用某种配置对象来组织且独立于名称的资产存储。在这种情况下,您可以在该配置中注册所有使用的图形文件,并通过调用诸如“Config.SpritesData.GetEnemySprite(EnemyType.Orc)”之类的东西来获取所需的资产。 但是现在你可以先检查你的精灵在 Assets 文件夹中的路径,因为 Resources.Load 只适用于 Resources 文件夹中的文件。如果路径正确,资产导入类型也值得检查,因为 Load() 方法将其转换为 Sprite,因此如果您的资产未作为 sprite 导入,则转换结果可能为 null。 如果您检查了这两项,但仍然无法正常工作,请告诉我,我会再考虑一下。

    【讨论】:

    • 好的,我的文件路径可能有问题。我可以尝试使用“assets/EnemyImage”之类的东西吗?
    • 感谢您的帮助。我意识到我认为资产文件夹是“资源”文件夹并将我的图像放在那里。我认为资源只是意味着资产。为了解决这个问题,我将我的图像放在了一个名为 resources 的文件夹中。谢谢您的帮助。下次我尽量不要犯这么容易的错误。
    • 另一个提示:Resources.Load&lt;&gt;() 仅适用于设置为单一的精灵。如果您有一个设置为多个,则需要使用Resources.LoadAll&lt;&gt;()
    猜你喜欢
    • 1970-01-01
    • 2014-02-11
    • 1970-01-01
    • 2019-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-13
    相关资源
    最近更新 更多