将动画师添加到实例化的预制件中?
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
之后的行。
我是 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
之后的行。