我有一个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”替换这个功能时,它可以工作......我到处搜索,我无法修复它
答案 0 :(得分:-1)
如果CharacterGenerator
不是静态类,则无法像这样访问它。您必须创建该类的实例才能访问属性。
CharacterGenerator cGen = new CharacterGenerator();
attributeValue.text = cGen._toon.GetPrimaryAttribute("Might").AdjustedBaseValue.ToString();
虽然这是一个新类的实例,但我不希望这些属性被填充,但是你的类可能是这样构造的。