错误CS0120:访问非静态成员`questgiver.iscompleted_questgiver'需要对象引用。

时间:2016-01-20 15:01:49

标签: c# unity3d

我尝试从标记为questgiver的{​​{1}}访问名为GameObject的脚本。但是每当我访问名为Jenny_NPC的非静态布尔变量时,我都会出错。我浏览并搜索了其他人得到的同样错误,但我似乎无法找到我现在正在经历的完全相同的情况。

iscompleted_questgiver

2 个答案:

答案 0 :(得分:0)

您需要创建questgiver类的实例才能在当前脚本中访问它。

void Show_Quest_Update()
{
    GameObject Jennny_Quest = GameObject.FindGameObjectWithTag ("Jenny_NPC"); 
    questgiver myQuestGiver = Jennny_Quest.GetComponent<questgiver>();

    Quest_List ();

    if(myQuestGiver.iscompleted_questgiver == false)
    {
        title_index = 0;
        infos_index = 0;
        npc_index = 0;
    }

    quest_title = quest [title_index, infos_index];
    quest_objectives = quest [title_index, infos_index + 3];
    quest_rewards = quest [title_index, infos_index + 4];
    quest_target = npc [npc_index];

    Panel ();
}

答案 1 :(得分:0)

从第

行开始
Jennny_Quest.GetComponent<questgiver>();

我推断questgiver是一个类,而不是一个对象。

所以,当你这样做时:

if(questgiver.iscompleted_questgiver == false)

您想要访问必须为iscompleted_questgiver类成员 static

该错误存在于questgiver没有使用iscompleted_questgiver标记为static的定义中。

将其设为static会将对象成员的性质完全改为类成员,并且可能不是您期望或需要的。

准确地回顾你在做什么,因为似乎存在语义(理解)问题。