首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Prefab内部获得雪碧动画(团结)

从Prefab内部获得雪碧动画(团结)
EN

Stack Overflow用户
提问于 2020-08-22 19:26:09
回答 1查看 48关注 0票数 0

我有一个Controller类,它有一个GameObjects列表,它确实是预制的(在我的代码中称为turtlesTypePrefab)。正如您在这里看到的,我使用的预制板里面有带有动画的精灵(我的意思是FirstTurtle有一个动画师,SecondTurtle等等,它们都是我的预制片ThreeTurtles的一部分)。

所以现在在我的代码中,我想改变我的预制件中的一个动画器中的一个布尔值。

在我的控制器里我有:

代码语言:javascript
复制
public GameObject[] turtlesTypePrefab;

然后,在我的更新方法中,我想做这样的事情:

代码语言:javascript
复制
void Update()
{

    for (int i = 0; i < turtles.Length; i++)
    {
        for (int j = 0; j < turtles[i].Count; j++)
        {
            GameObject turtle = turtles[i][j];

            if (turtle != null)
            {
                MoveTurtle(turtle, i);
                // THIS DOESNT WORK
                anim = turtle.GetComponent<FirstTurtle>().GetComponent<Animator>();
                anim.SetBool("diving", true);
            }
        }
    }
}

有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-22 22:57:56

如果每个海龟游戏对象都有自己的动画组件,那么您可以从树龟游戏对象GetComponentInChildren()初始化父动画器。

您要做的是通过父级代码访问其中一个子动画器。下面是一个例子

//此脚本将附加到父程序

代码语言:javascript
复制
anim = GetComponentInChildren<Animator>();

您使用了以下代码行:

代码语言:javascript
复制
anim = turtle.GetComponent<FirstTurtle>().GetComponent<Animator>();

问题在于,FirstTurtle是一个子游戏对象,而不是一个组件。因此,您不能真正将FirstTurtle作为一个组件。使用GetComponent()只在您想要使用您正在处理的游戏对象的动画师时才能工作。所以我建议你使用GetComponentinChildren。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63540266

复制
相关文章

相似问题

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