Unity:使用动画师实例化预制件

Posted

技术标签:

【中文标题】Unity:使用动画师实例化预制件【英文标题】:Unity: Instantiating prefab with animator 【发布时间】:2014-04-09 15:57:53 【问题描述】:

我正在使用 Unity 4.3.4 引擎制作 2D 平台游戏。我创建了一个简单的预制件,它有两个动画:“空闲”和“死亡”(我使用“动画师”)和脚本来控制这个动画。

问题是:当我实例化这个预制件的克隆时,它们总是显示“空闲”动画,并且在需要时不会打开“死亡”。

pos = new Vector3 (-5, 4, 0) * TileSize; 
newObject = Instantiate (Bonus, pos, Quaternion.identity) as GameObject;

但有趣的是:我找到了一种让动画正常工作的方法。只需在实例化后添加一个这样的字符串:

newObject.animation["boxNew"].speed=1;

或this(或任何试图与“animaton”一起操作的字符串):

newObject.animation.enabled=true;

当然,我在这个字符串中遇到异常:"MissingComponentException: There is no 'Animation' attach to the "BonusBlock(Clone)" game object"。这是真的,我真的没有动画组件,我有动画师。但为什么一切都以这种方式工作?谁能解释一下?

【问题讨论】:

【参考方案1】:

动画器仅在您使用新的机械/状态流动画器全力以赴时才使用,作为一个简单的示例,您想要做的是将动画(不是动画器)组件添加到您的预制件中,并分配将您的 2 个动画添加到所述动画组件的检查器中的动画列表中。之后在对象上你可以使用 newObject.animation.Play("death");当你想要它触发时播放死亡动画。或使用类似 newObject.animation.CrossFade("death");对于混合动画。

在这里找到 -> http://docs.unity3d.com/Documentation/ScriptReference/Animation.html

【讨论】:

【参考方案2】:

Unity Technologies 给出了答案:在停用之前,使用默认状态重置游戏对象。 Discussion on Unity3d Forum

如果你会看中文,click here

【讨论】:

以上是关于Unity:使用动画师实例化预制件的主要内容,如果未能解决你的问题,请参考以下文章

Unity Photon:实例化非预制对象?

Unity2D:在订单中禁用实例化的预制件

Unity快速入门教程-详解预制体(Prefab)及其实例化Instantiate

在 Unity C# 中实例化游戏对象列表

Unity3D日常开发UI预制体的实例化实操演示

Unity3D日常开发UI预制体的实例化实操演示