unity3d 你能把一个精灵渲染器附加到一个主游戏对象的子对象上,并且仍然让动画师从主对象访问事件的函数吗?

bvn4nwqk  于 2022-11-25  发布在  其他
关注(0)|答案(1)|浏览(102)

当创建一个玩家或敌人时,我了解到最好的做法是将精灵渲染器连接到一个子游戏对象上,这样你就可以轻松地重新定位精灵。然而,这样做意味着动画师也需要连接到子游戏对象上,这意味着你不能访问父游戏对象的任何动画事件功能。有人知道解决这个问题的方法吗?
我试着把动画师放在父对象上,但后来它说sprite渲染器组件丢失了,所以我相信它们需要在同一个对象上。

gopyfrb3

gopyfrb31#

我试着把动画师放在父对象上,但后来它说sprite渲染器组件丢失了,所以我相信它们需要在同一个对象上。
不!发生的是你移动了动画师的根,所以存储在你的动画剪辑中的原始属性路径现在无效了。
属性路径基本上是通过对象名称存储的。
以前是什么,例如(不知道属性路径的确切形式)

/Sprite/SomeProperty

现在需要像这样

YourSpriteObject/Sprite/SomeProperty

但由于动画仍使用第一个组件,并且父对象上没有Sprite组件,因此该组件无效并显示为缺失。
您必须重做动画或编写编辑器脚本,以便相应地自动更改所有动画路径。
Here我曾经做过类似的事情来重命名动画对象。
或者公开子对象上的方法,然后通过

transform.parent.GetComponent<YourParentClass>().YourMethod();

当然我会缓存一次或者通过检查器分配

相关问题