2015-08-28 61 views
0

我目前正在Unity3D中爲我的遊戲創建一個任務系統。它有一個工作任務系統,到目前爲止,現在,它看起來像這樣:獲取具有不同值的靜態遊戲對象的價值

enter image description here

,殺特定魔鬼針對的任務後,追求的價值遞增:

enter image description here

但是如果我採取其他任務,例如像這樣:

enter image description here

enter image description here

即使滿足條件,您也可以看到值不像第一個那樣增加了值。我在這裏做的是在我的NPC(非玩家角色)上附加了一個名爲QuestGiver的腳本,在我的玩家身上,我附加了一個名爲QuestTracker的腳本。在我的QuestTracker上,我已將它連接到我的QuestGiver,因爲它可以在任何地方訪問,因爲我有很多NPC。現在

public static QuestGiver questGiver; 

,我QuestGiver,這裏是我的代碼:

public string mobName;  
    void Update() 
     { 
      if (fighter.opponent != null && killQuest) 
      { 
       if (mobToBeKilled.mobName == mobName && questAccepted) 
       { 
        if (mobToBeKilled.isDead() && !mobToBeKilled.isAlive && !questFinish) 
        { 
         currentKillCount++; 
         mobToBeKilled.isAlive = true; 

         if (currentKillCount == maxKillCount) 
         { 
          questFinish = true; 
          log.logText.text = log.InitialValue + questTitle + " quest completed!\n"; 
          log.NewValue = log.logText.text; 
         } 
        } 
       } 
      } 
     } 

正如你可以在我的檢查看,我給自己定了名的怪物就叫做mobName字符串被殺死和我QuestTracker靜態變量可通過以下方法對我QuestGiver訪問:

void OnMouseDown() 
{ 
    QuestTracker.questGiver = this; 
} 

對於我訪問mobToBeKilled,我已經附上OnMouseEnter在()函數在我的敵人腳本是這樣的:

private void OnMouseEnter() 
{ 
    player.GetComponent<Fighter>().opponent = gameObject; 
    QuestGiver.mobToBeKilled = this; 
} 

我可以說這是工作正常,因爲我爲例如Debug.Log(mobToBeKilled.mobName),它輸出「龍」或「殺手蜂」。但是當我的Debug.Log(mobName),它應該是NPC要求定位的那個時,它輸出2個名字,你可以在圖像的控制檯上看到它。有可能我可以通過2個不同的值訪問這個靜態對象嗎?很抱歉,很長的文章,我只想清理一下。

回答

0

有一個以上的GameObject運行Debug.Log()命令。 此外,mobName是暴徒本身的名稱,這就是爲什麼它會爲正在執行Debug.Log()的每個GameObject輸出不同的值。