【发布时间】:2019-05-01 13:18:14
【问题描述】:
我目前正在制作 2D 像素 Jump'n'Run。我希望玩家能够为玩家角色“购买”新皮肤。我有多个精灵表。它们都具有相同的结构。我正在使用精灵动画。
如何在运行时更改精灵表?我找到了以下解决方案,但它非常耗费资源:https://youtu.be/HM17mAmLd7k?t=1818
真诚地, 朱利安
【问题讨论】:
标签: unity3d animation sprite sprite-sheet
我目前正在制作 2D 像素 Jump'n'Run。我希望玩家能够为玩家角色“购买”新皮肤。我有多个精灵表。它们都具有相同的结构。我正在使用精灵动画。
如何在运行时更改精灵表?我找到了以下解决方案,但它非常耗费资源:https://youtu.be/HM17mAmLd7k?t=1818
真诚地, 朱利安
【问题讨论】:
标签: unity3d animation sprite sprite-sheet
视频中资源如此密集的原因是因为所有精灵都加载到每个LateUpdate() 中,即每帧一次。该脚本看起来像是在抓取精灵表中的所有精灵并在每一帧加载它们,这样如果spriteSheetName 发生变化,它将在下一帧更新渲染器。
我不认为这是必要的,他在视频中提到这只是作为一个例子。我要做的是将它从LateUpdate() 方法中移出并移到它自己的方法中,该方法只能在用户想要更改精灵表时调用。因此,与其在每一帧都从 sprite-sheet 中盲目地加载精灵,不如只在用户选择它时才加载它们。
这应该会大大降低此脚本的强度,因为您没有将所有精灵加载到精灵表中并在每一帧上循环遍历它们的每个渲染器。
【讨论】: