我正在做一个带有敌人定义的SO,像这样。
public class Enemy_SO : ScriptableObject
{
public string name;
[Header("AI Agent Settings")]
public int speed;
public int angularSpeed;
}
我把它附加到敌人的游戏对象上,就像这样。
public class EnemyController : MonoBehaviour
{
public Enemy_SO enemy_1;
public NavMeshAgent enemyAgent;
private void Start()
{
enemyAgent = GetComponent<NavMeshAgent>();
Debug.Log("name: " + enemy_1.name);
enemyAgent.speed = enemy_1.speed;
}
}
播放时,控制台输出:
NullReferenceException: Object reference not set to an instance of an object
EnemyController.Start () (at Assets/Scripts/Enemies/EnemyController.cs:29)
name: Enemy 1
UnityEngine.Debug:Log(Object)
EnemyController:Start() (at Assets/Scripts/Enemies/EnemyController.cs:29)
它在第29行抛出了错误,但在第一帧打印出了同样的第29行。 所有.asset的值都正确使用。 Visual Studio调试器连接到Unity(和播放),它没有输出错误。 .asset的值在quickwatch中不是空的,在第28行,也就是错误之前的那行。