Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 对象引用并使用它指定新类_C#_Object_Unity3d_Nullreferenceexception - Fatal编程技术网

C# 对象引用并使用它指定新类

C# 对象引用并使用它指定新类,c#,object,unity3d,nullreferenceexception,C#,Object,Unity3d,Nullreferenceexception,正在尝试传递对象引用并在新脚本/类中设置它。 Player.cs 如何正确地引用和分配我认为这是NullPointer异常能够引用多个问题的一个恶劣实例。它只提供行号,但不提供该行中哪个引用为空NewPlayer不为空,AchievementList为空。您需要在前面的ShowUI方法或PanelUpdate构造函数中初始化该值 另外,我讨厌空引用异常的非特异性;非常令人沮丧。您的PlayerDetails对象中有一个null属性。在调试模式下检查NewPlayer对象的属性,您将看到这一点 即

正在尝试传递对象引用并在新脚本/类中设置它。 Player.cs


如何正确地引用和分配

我认为这是NullPointer异常能够引用多个问题的一个恶劣实例。它只提供行号,但不提供该行中哪个引用为空
NewPlayer
不为空,
AchievementList
为空。您需要在前面的
ShowUI
方法或PanelUpdate构造函数中初始化该值


另外,我讨厌空引用异常的非特异性;非常令人沮丧。

您的PlayerDetails对象中有一个null属性。在调试模式下检查NewPlayer对象的属性,您将看到这一点

即使你在它上面使用了一个新的构造函数,也不意味着这个属性会被赋予一个值,除非它在构造函数中被特别赋予了一个值

您还需要显示PlayerDetails类的代码,以便更好地了解情况

此外:

您正在第1行创建一个新的PlayerDetails对象,但在第2行为其指定一个不同的值


很好。

因此,我创建了构造函数,向其传递了PlayerDetails,并将其分配给一个新的构造函数,仍然不确定,但它仍然将“this”显示为null是的,在构造函数完成之前,您不能传递对象的引用。您可以使用
this
分配值(aka this.Player=…),但不能将值分配给
this
(aka myVar=this)。我认为这个表示法就是调试器显示它的方式。但是我想你可能错过了我想要指出的内容。您需要在构造函数中初始化
AchieventList
,而不是
NewPlayer
Player
<代码>成就列表为空值。无法初始化成就列表。这是一个统一的文本字段,试图设置相同的错误anyways@user3072143我想他指的是新玩家。成就当你想在下一行扔掉它时,你不需要实例化
Player
<代码>玩家=新玩家Player.acquisition没有实例化。实例化
Player.acquisition
,很高兴看到这是一个错误,是在测试东西。这里是出错的地方AchieventList是一个统一的文本字段选择带有
PanelUpdate
的游戏对象。然后在inspector中查找
AchievementList
。它的价值应该是合理的。拖放UI文本发现另一个错误:
公共面板更新(PlayerDetails NewPlayer){PlayerDetails Player=newplayerDetails();Player=NewPlayer;}
错误。构造函数在单行为中不起作用
PlayerDetails Player = new PlayerDetails(); // Assigning a new value here means nothing
Player = NewPlayer;
PlayerDetails Player = NewPlayer;