Animation 更新脚本中的动画引用

Animation 更新脚本中的动画引用,animation,unity3d,sprite,Animation,Unity3d,Sprite,对于2D侧滚平台,我制作了一个小齿轮系统,如下所示: 玩家(我的主要玩家游戏对象,附带齿轮脚本) Gear(此游戏对象仅用于组织,在脚本中命名为“根”,没有附加脚本) 护甲(带精灵和护甲脚本的护甲) 武器(带有精灵和武器脚本的武器) 我有一个附加到玩家Gear的脚本,该脚本引用了“Gear”游戏对象,将其用作我未来物品的父变换 在装备上,我以这种方式装备武器: 公共无效装备(可穿戴w){ 开关(w型){ 可穿戴式武器: GameObject weaponGO=实例化(w.GameObje

对于2D侧滚平台,我制作了一个小齿轮系统,如下所示:

  • 玩家(我的主要玩家游戏对象,附带齿轮脚本)
    • Gear(此游戏对象仅用于组织,在脚本中命名为“根”,没有附加脚本)
    • 护甲(带精灵和护甲脚本的护甲)
    • 武器(带有精灵和武器脚本的武器)
我有一个附加到玩家Gear的脚本,该脚本引用了“Gear”游戏对象,将其用作我未来物品的父变换

在装备上,我以这种方式装备武器:

公共无效装备(可穿戴w){
开关(w型){
可穿戴式武器:
GameObject weaponGO=实例化(w.GameObject);
weaponGO.transform.SetParent(root.transform);
摧毁(这个。武器。游戏对象);
this.wearm=w.GetComponent();
打破
//我做了一个Switch,因为我以后会做盔甲,宠物等
}
}
问题是,我也有一个动画师在付款人,攻击,移动等


所以当我改变我的武器时,它在0,0,0产生,它根本不跟随动画,在我的玩家的动画中,我看到“武器:位置(丢失!)”,所以我认为这来自动画参考。。。但是如何在我的脚本中更改它呢?

问题似乎在于对象命名。因此,在实例化之后,您必须重命名新的武器对象,使其名称与您删除的名称完全相同。在此之后,动画师中的引用将自动更新

请注意,层次中的位置相对于具有Animator组件的对象也应相同


还请注意,实例化的对象应具有与已删除对象在Animator中使用的相同属性(组件)。

我尝试过,它解决了丢失的问题,但动画仍然无法工作(我有两个精灵用于武器动画,4个精灵用于装甲动画)。我找到的唯一解决办法是保留相同的游戏对象,但将其所有属性更改为新武器的属性。事实上,它并没有解决精灵问题,我总是需要找到一个解决方案来避免这个动画精灵问题。如果这个对象的动画有不同的精灵,你必须进行某种抽象。也许你应该在武器对象上有一个单独的动画师和一个特定的动画,从父动画你可以调用一个播放这个动画的方法,例如使用动画事件。编辑答案以反映这一点。