Unity - 如何在运行时更改播放器精灵表?

Posted

技术标签:

【中文标题】Unity - 如何在运行时更改播放器精灵表?【英文标题】:Unity - How to change player spritesheet while runtime? 【发布时间】:2019-05-01 13:18:14 【问题描述】:

我目前正在制作 2D 像素 Jump'n'Run。我希望玩家能够为玩家角色“购买”新皮肤。我有多个精灵表。它们都具有相同的结构。我正在使用精灵动画。

如何在运行时更改精灵表?我找到了以下解决方案,但它非常耗费资源:https://youtu.be/HM17mAmLd7k?t=1818

真诚地, 朱利安

【问题讨论】:

【参考方案1】:

视频中资源如此密集的原因是因为所有精灵都加载到每个LateUpdate() 中,即每帧一次。该脚本看起来像是在抓取精灵表中的所有精灵并在每一帧加载它们,这样如果spriteSheetName 发生变化,它将在下一帧更新渲染器。

我不认为这是必要的,他在视频中提到这只是作为一个例子。我要做的是将它从LateUpdate() 方法中移出并移到它自己的方法中,该方法只能在用户想要更改精灵表时调用。因此,与其在每一帧都从 sprite-sheet 中盲目地加载精灵,不如只在用户选择它时才加载它们。

这应该会大大降低此脚本的强度,因为您没有将所有精灵加载到精灵表中并在每一帧上循环遍历它们的每个渲染器。

【讨论】:

是的,我也试过这个。但是当我这样做时,它会在下一帧中再次消失,并且角色看起来像以前一样。

以上是关于Unity - 如何在运行时更改播放器精灵表?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Unity 上更改 2D 动画中精灵之间的时间?

播放(动画)巨大精灵表的最佳技术

在 Unity 中为动画精灵添加帽子或皮肤

如何在 Unity 运行时加载 FBX 文件?

Unity2D像素游戏开发——Aseprite简单人物绘画+动画制作导出精灵表示例

当按下不同的键时如何更改精灵表中的帧。 XNA