我目前正在Unity3D中爲我的遊戲創建一個任務系統。它有一個工作任務系統,到目前爲止,現在,它看起來像這樣:獲取具有不同值的靜態遊戲對象的價值
,殺特定魔鬼針對的任務後,追求的價值遞增:
但是如果我採取其他任務,例如像這樣:
即使滿足條件,您也可以看到值不像第一個那樣增加了值。我在這裏做的是在我的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個不同的值訪問這個靜態對象嗎?很抱歉,很長的文章,我只想清理一下。