【问题标题】:unity 3d sprite management for 2d game用于 2d 游戏的统一 3d 精灵管理
【发布时间】: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


【解决方案1】:

我不确定你所说的 Each prefab contains its 50 png files 是什么意思。

到目前为止,我只完成了基本的 Unity 图形,所以我相信这里有人可以提出更优雅的想法,但作为第一种方法,我会从你的 png 文件中创建精灵并使用 50 个公共 Sprite 变量在您的 C# 脚本中,链接到每个精灵。然后在mario 上为Sprite Renderer 动态设置Sprite。假设您的预制件正在使用 Sprite 渲染器。

类似

public Sprite running;
public Sprite bigMario;

if (isRunning)
     GetComponent(SpriteRenderer).sprite = running;
else if (isBig)
     GetComponent(SpriteRenderer).sprite = bigMario;

【讨论】:

  • 这是个好主意,但我忘了告诉你一些事情:有时我需要同时显示 2 或 3 个 png(对象)
猜你喜欢
  • 1970-01-01
  • 2016-11-29
  • 1970-01-01
  • 1970-01-01
  • 2015-05-10
  • 1970-01-01
  • 2016-11-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多