脚本对象抛出空引用,但它的值被正确使用。

问题描述 投票:0回答:1

我正在做一个带有敌人定义的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行,也就是错误之前的那行。

unity3d scriptable-object
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.