【发布时间】:2018-03-03 17:18:58
【问题描述】:
我正在用 unity 3d 编写一个非常基本的 2d 游戏。
我有一些可以有多个状态的二维对象。例如,想象一下马里奥:你有小马里奥、大马里奥、马里奥和耀西。而且每个马里奥的状态都有不同的子状态(马里奥跑步等)
这正是我想要做的。所以我在 png 文件中设计了每个状态。每个对象我有大约 50 个 png 文件。
现在,我想将这些状态集成到我的统一项目中。
我为每个对象创建了一个预制件。每个预制件包含 50 个 png 文件。 我还有一个附加到预制对象的 C# 组件。 我的 C# 组件包含 50 个公共 GameObject 属性。 我已将此属性链接到 png 文件。 然后,我的 C# 代码告诉每个 png 文件是否可见。
例如:
small_mario_running_1.SetActive(false);
small_mario_running_2.SetActive(true);
small_mario_running_1.SetActive(false);
small_mario_running_2.SetActive(false);
请注意马里奥只是一个例子。
我有很多 SetActive 调用,所以我想知道是否有统一的最佳方法。
谢谢
【问题讨论】:
-
“所以我在一个 png 文件中设计了每个状态。每个对象大约有 50 个 png 文件。” 你只需要 一个 Spritesheet 您的角色动画,然后您可以使用 Unity 的编辑器 Sprite Editor 提取每个小精灵,以便您可以通过动画系统或脚本选择要显示的精灵。 This 应该让你开始。
-
抛弃这种风格的动画,转而使用骨骼动画。如此简单,并且可以用更少的精力做你想做的事...... Spine 很棒,但要花钱。它有一个易于使用的运行时,与 unity 集成,它的社区和开发人员都很活跃,可以帮助解决任何问题
标签: unity3d