我是Unity3d的新手。我正在努力開發一個簡單的unity3d遊戲的結構的理解。我有一個基本的遊戲,我在屏幕上有多個對象&我必須計算用戶在它們上面點擊了多少次。就像我會有殺死敵人的總數。 我的問題是實施遊戲循環&計算總分的事情的最佳做法是什麼。我們是否可以擁有可以在所有腳本中更新的全局變量,或者我們需要在腳本或遊戲對象之間傳遞數據。Unity 3D遊戲循環邏輯和跨腳本訪問數據
問候, 哈桑伊姆蒂亞茲
我是Unity3d的新手。我正在努力開發一個簡單的unity3d遊戲的結構的理解。我有一個基本的遊戲,我在屏幕上有多個對象&我必須計算用戶在它們上面點擊了多少次。就像我會有殺死敵人的總數。 我的問題是實施遊戲循環&計算總分的事情的最佳做法是什麼。我們是否可以擁有可以在所有腳本中更新的全局變量,或者我們需要在腳本或遊戲對象之間傳遞數據。Unity 3D遊戲循環邏輯和跨腳本訪問數據
問候, 哈桑伊姆蒂亞茲
沒有直接回答這個,它取決於與建築多角度。我喜歡Event聚合模式,我們在遊戲中使用它。
當消息發佈時,實例上的Handle方法將觸發,您可以通過實現IHandle來描述事件。
在你的情況下每當敵人死亡時發佈EnemyKilled事件。你的記分牌可以聽這個事件並更新
是的,我希望Unity中有一個更容易的變量傳遞系統,如果你在任何腳本的開始處聲明'global.MyVariable1',GameMaker4有一個很好的方法,它來自任何其他腳本只是把'global.MyVariable1'。
爲了在Unity中得到這個功能,我發現一個簡單的方法是製作一個'MainController'對象,並將它放在遊戲中的第一個場景中,並且不要破壞腳本,該對象將處理所有遊戲變量,遊戲場景變化,保存/加載等等。因爲它沒有被破壞,所以它會在任何場景中攜帶變量。
要訪問它,請使用GameObject.GetComponent函數。所以是的,我們需要在遊戲對象上的腳本之間傳遞數據。其他人使用大型,多類,複雜的遊戲狀態系統,但這些系統很難調試/更新,特別是如果您忘記了一段時間後如何設置它們。 遊戲結構:
已有INT變量MODE,保持遊戲狀態的軌道(例如,MODE = 0; // 前奏或主菜單,MODE = 1; // PlayerSelectMenu, MODE = 2; // GameTypeA_Level1,MODE = 3; // GameTypeB_Level1等
有暫停/未暫停
一個BOOL的對象你點擊計數:
。//put this on object to click on
using UnityEngine;
using System.Collections;
public class MouseClick : MonoBehaviour
{
public MainController mcont;//reference to the MainController Object
void Start()
{
mcont = GetComponent<MainController>();
}
//now to access any MainController var's use 'mcont.VARIABLE'
void OnMouseDown()
{
mcont.ObjClicked += 1;
}
}
還有其他內置團結鼠標功能: OnMouseEnter()
,OnMouseOver()
和OnMouseExit()
。
我不知道那個傢伙在說什麼,'沒有直接的答案'?我習慣於使用編譯器,但非常喜歡拖放式Unity設置。從腳本實例化預製件也是一個不錯的功能。