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

本文关键字:questgiver iscompleted 对象引用 CS0120 访问 静态成员 错误 | 更新日期: 2023-09-27 18:31:19

我正在尝试从标记为Jenny_NPCGameObject访问名为questgiver的脚本。但是,每当我访问名为 iscompleted_questgiver 的非静态布尔变量时,我都会遇到错误。我已经浏览并搜索了其他人遇到的相同错误,但我似乎找不到我现在遇到的完全相同的情况。

void Show_Quest_Update()
{
    GameObject Jennny_Quest = GameObject.FindGameObjectWithTag ("Jenny_NPC"); 
    Jennny_Quest.GetComponent<questgiver>();
    Quest_List ();
    if(questgiver.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 ();
}

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

您需要

创建 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 ();
}

从行

Jennny_Quest.GetComponent<questgiver>();

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

因此,当您执行此操作时:

if(questgiver.iscompleted_questgiver == false)

您要访问必须static类成员iscompleted_questgiver

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

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

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