将动画师添加到实例化的预制件中?

Add animator to instantiated prefab?

我是 Unity 的新手,所以请多多包涵... 在 Blender 中创建了一个模型,完成了元数据和动画。

制作了一个带有空闲动画的简单动画器:

我们有一个玩家生成器 (DinoSpawnLocation),带有脚本 (DinoSpawner) 来生成玩家 (DinoPlayer),并且动画师作为组件添加:

这是 DinoSpawner 脚本,它应该实例化一个预制件,并将动画师添加为一个组件:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class DinoSpawner : MonoBehaviour
{

    public GameObject DinoSpawn;

    // Start is called before the first frame update
    void Start()
    {
        Spawn();
    }

    void Spawn()
    {
        Quaternion YPosition = Quaternion.Euler(0, -60, 0);
        transform.rotation = YPosition;
        GameObject clone = Instantiate(DinoSpawn, transform.position, transform.rotation);
        Animator animator = DinoSpawn.GetComponent<Animator>();
        animator.runtimeAnimatorController = Resources.Load("Assets/Animations/Dino Controller 1.controller") as RuntimeAnimatorController;
    }


}

这就是问题,生成了一个克隆,并添加了动画器组件,但它没有link动画器控制器(以黄色突出显示):

我仔细检查了 Resource.Load() 方法中的路径,但由于某种原因它不会自动添加它,而且我在控制台中没有收到任何错误。

我觉得这应该是一个简单的解决方法,但在这个问题上停留了太久,如果有人能提供帮助,我将不胜感激:)

听起来像 animator.runtimeAnimatorController = Resources.Load("Assets/Animations/Dino Controller 1.controller") as RuntimeAnimatorController; returns null.

这是有道理的,因为 Resources.Load 应该用于放置在名为 Resources 的文件夹中的资产,然后还期望 s 路径 relative 到这个 Resources 文件夹 .. 所以我很怀疑你是否将你的资产放在了一个文件夹中,例如

Assets/Resources/Assets/Animations/...

总之总的来说Don't use Resources!

只需在您的预制件中正确分配控制器资产并删除 Instantiate 之后的行。