首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >预制板之间的重复动画

预制板之间的重复动画
EN

Stack Overflow用户
提问于 2015-03-11 20:47:18
回答 2查看 3.1K关注 0票数 5

我在一个场景中得到了两个或更多的相同预制件的实例。它们中的每一个都有一个动画师,并且每个人都有相同的动画师控制器连接到它。当我制作其中一个动画时,所有的动画效果都是一样的。到底发生了什么,有什么线索吗?我应该为现场的每个玩家设置一个单独的动画师控制器吗?如何在C#中将动画师彼此分开?

EN

回答 2

Stack Overflow用户

发布于 2015-03-29 13:01:12

即使你没有把你的代码作为资源,我也会添加这个作为答案。这就是我的赌注。

我已经做了一个游戏,也共享动画与相同的预制,但如果你只是调用需要动画的GameObject。它不应该调用其他Animator调用一个对象每次都被不同的Animator实例化,即使Animator的文件是相同的。

为了测试这一点,我建议你每次实例化你的GameObject。给它起个别的名字。例如。

代码语言:javascript
运行
复制
public GameObject[] myPrefabs; //make sure to add the size in the inspector

myPrefabs[0] = (GameObject)Instantiate(nameofPrefab);
myPrefabs[0].name = "myPrefabs0"; // this is to make sure that name (Clone) is removed;

// Then call the animation.
myPrefabs[0].GetComponent<Animator>().SetTrigger("Attack");

//设置触发器,SetBool,SetInt。因为它是一个动画师

我使用List而不是Array,但我认为这是我能给出的最基本的一个。

预制件的命名不是解决问题所必需的。但是您需要它,这样您就可以检查它是否是正在调用Animator的正确GameObject

票数 1
EN

Stack Overflow用户

发布于 2015-03-29 17:25:55

不,你可以使用一个动画师控制器来处理几个预制件。我不知道你尝试了什么,你的错误是什么。如果你把你的代码,我可以提供更多的帮助。

所有的预制件都必须有自己的Animator组件。然后,这些对象可以使用相同的动画控制器。

例如,

代码语言:javascript
运行
复制
Animator animator;

GameObject prefab;
List<GameObject> prefabs;

prefab = (GameObject)Instantiate(Resources.Load("prefabNameinAssets"));
prefab.AddComponent<Animator>(); // add each prefab its own Animator component

animator = prefab.GetComponent<Animator>();
animator.runtimeAnimatorController = (RuntimeAnimatorController)Instantiate(Resources.Load("animatorControllerNameinAssets"));
//get prefab's Animator Component and set its controller

prefab.name = "prefabName";
prefabs.Add(prefab);

在此之后,您可以使用所有预制动画控制器单独。它不会影响其他预制件AnimatorControllers。

代码语言:javascript
运行
复制
prefabs[0].GetComponent<Animator>().setTrigger("Animation");
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28987002

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档