unity 奇 NullExceptionReference
Unity odd NullExceptionReference
在我的开放世界游戏中,npc 应该有不同的外观。有化妆品转换列表。
但是当试图将它们添加到名为 "style" 的转换列表时,出现异常:
NullReferenceException: Object reference not set to an instance of an object. PeopleStyle.Start () (at Assets/Scripts/PeopleStyle.cs:15)
PeopleStyle.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PeopleStyle : MonoBehaviour {
public List<Transform> heads;
public List<Transform> bodys;
public List<Transform> arms;
public List<Transform> legs;
public List<Transform> shoes;
private List<Transform> style;
private void Start() {
style.Add(heads[Random.Range(0, heads.Count)]);
style.Add(bodys[Random.Range(0, bodys.Count)]);
style.Add(arms[Random.Range(0, arms.Count)]);
style.Add(legs[Random.Range(0, legs.Count)]);
style.Add(shoes[Random.Range(0, shoes.Count)]);
foreach (Transform item in heads) {
GameObject obj = Instantiate(item.gameObject, transform.position, transform.rotation) as GameObject;
obj.transform.localScale = GameObject.FindWithTag("ScaleExample").transform.localScale;
obj.transform.parent = this.transform;
}
}
}
修复:
我没有分配变量样式。如果我播种它就不会 post 这个,但我每天在这个项目上工作 13 小时。
private List<Transform> style = new List<Transform>();
您需要在使用前实例化您的列表。
即
public List<Transform> heads = new List<Transform>();
public List<Transform> bodys = new List<Transform>();
public List<Transform> arms = new List<Transform>();
public List<Transform> legs = new List<Transform>();
public List<Transform> shoes = new List<Transform>();
private List<Transform> style = new List<Transform>();
您的 style
变量是私有的,这意味着它没有序列化,因此在您的 Start()
方法中它将是 null
。
private List<Transform> style = new List<Transform>();
在我的开放世界游戏中,npc 应该有不同的外观。有化妆品转换列表。 但是当试图将它们添加到名为 "style" 的转换列表时,出现异常:
NullReferenceException: Object reference not set to an instance of an object. PeopleStyle.Start () (at Assets/Scripts/PeopleStyle.cs:15)
PeopleStyle.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PeopleStyle : MonoBehaviour {
public List<Transform> heads;
public List<Transform> bodys;
public List<Transform> arms;
public List<Transform> legs;
public List<Transform> shoes;
private List<Transform> style;
private void Start() {
style.Add(heads[Random.Range(0, heads.Count)]);
style.Add(bodys[Random.Range(0, bodys.Count)]);
style.Add(arms[Random.Range(0, arms.Count)]);
style.Add(legs[Random.Range(0, legs.Count)]);
style.Add(shoes[Random.Range(0, shoes.Count)]);
foreach (Transform item in heads) {
GameObject obj = Instantiate(item.gameObject, transform.position, transform.rotation) as GameObject;
obj.transform.localScale = GameObject.FindWithTag("ScaleExample").transform.localScale;
obj.transform.parent = this.transform;
}
}
}
修复:
我没有分配变量样式。如果我播种它就不会 post 这个,但我每天在这个项目上工作 13 小时。
private List<Transform> style = new List<Transform>();
您需要在使用前实例化您的列表。
即
public List<Transform> heads = new List<Transform>();
public List<Transform> bodys = new List<Transform>();
public List<Transform> arms = new List<Transform>();
public List<Transform> legs = new List<Transform>();
public List<Transform> shoes = new List<Transform>();
private List<Transform> style = new List<Transform>();
您的 style
变量是私有的,这意味着它没有序列化,因此在您的 Start()
方法中它将是 null
。
private List<Transform> style = new List<Transform>();