从另一个脚本c#显示变量的UNity3D错误

时间:2016-06-23 19:03:22

标签: c# unity3d

我有一个UI Text元素(在画布中)我需要从另一个脚本中获取值。

我现在正在做的事情(这是我最接近它的工作方式)是:

public class AttributeValueController : MonoBehaviour {

//public AttributeName attribute;
[SerializeField]
private Text attributeValue = null;

// Use this for initialization
void Start () {
    attributeValue.text = CharacterGenerator._toon.GetPrimaryAttribute("Might").AdjustedBaseValue.ToString();   
}

我在检查器上将我想要更改的文本组件设置为“attributeValue”。

当我运行时,我得到了错误

  

Assets / Scripts / HUD Classes / AttributeValueController.cs(19,58):错误CS0120:访问非静态成员所需的对象引用`CharacterGenerator._toon'

  

NullReferenceException:未将对象引用设置为对象的实例   UnityEngine.UI.Graphic.OnRebuildRequested()(在C:/buildslave/unity/build/Extensions/guisystem/UnityEngine.UI/UI/Core/Graphic.cs:480)   UnityEngine.UI.GraphicRebuildTracker.OnRebuildRequested()(在C:/buildslave/unity/build/Extensions/guisystem/UnityEngine.UI/UI/Core/GraphicRebuildTracker.cs:33)   UnityEngine.CanvasRenderer.RequestRefresh()(在C:/buildslave/unity/build/artifacts/generated/common/modules/UI/CanvasRendererBindings.gen.cs:314)

任何人都可以提供帮助?当我用“0”替换这个功能时,它可以工作......我到处搜索,我无法修复它

1 个答案:

答案 0 :(得分:-1)

如果CharacterGenerator不是静态类,则无法像这样访问它。您必须创建该类的实例才能访问属性。

CharacterGenerator cGen = new CharacterGenerator();
attributeValue.text = cGen._toon.GetPrimaryAttribute("Might").AdjustedBaseValue.ToString();

虽然这是一个新类的实例,但我不希望这些属性被填充,但是你的类可能是这样构造的。