1. 程式人生 > >Unity3d離散模擬引擎基礎

Unity3d離散模擬引擎基礎

1. 解釋物件與資源的區別與聯絡
  • 物件:物件直接出現在遊戲場景中,是資源整合的具體表現,物件一般有玩家,敵人,遊戲場景,攝像機等虛擬父類,這些父類沒有例項化,而他們的子類例項化幷包含了這些遊戲物件,我們可以對這些物件進行操作。
  • 資源:資源可以是我們自定義或下載下來的素材,可以被多個物件使用,有些資源可以做為模板並例項化為物件。資原始檔夾(Asset)通常包含指令碼,預設,場景,聲音等。
2. 下載幾個遊戲案例,分別總結資源、物件組織的結構(指資源的目錄組織結構與遊戲物件樹的層次結構)
  • 資源的目錄組織結構:
    • 主要包括動畫,文字,場景,素材,模型,預設以及使用說明等。
  • 遊戲物件樹的層次結構:
    • 主要包括攝像機包,遊戲開始位置,場景佈局以及文字管理等。
3. 編寫一個程式碼,使用 debug 語句來驗證 MonoBehaviour 基本行為或事件觸發的條件
public class firstTry : MonoBehaviour {
    //Awake() Start() Update() FixedUpdate() LateUpdate()OnGUI() OnDisable() OnEnable()
    // Use this for initialization
    void Awake(){
        Debug.Log ("onAwake");
    }
    void Start () {
        Debug.
Log ("onStart"); } // Update is called once per frame void Update () { Debug.Log ("onUpdate"); } void FixedUpdate(){ Debug.Log ("onFixedUpdate"); } void LateUpdate(){ Debug.Log ("onLateUpdate"); } void OnGUI(){ Debug.Log ("onGUI"); } void
OnDisable() { Debug.Log ("onDisable"); } void OnEnable(){ Debug.Log ("onEnable"); } }
3. 查詢指令碼手冊,瞭解 GameObject,Transform,Component 物件
  1. 分別翻譯官方對三個物件的描述(Description)
    GameObjects是Unity中代表角色,道具和風景的基本物件。它們本身並不是很完整,但它們充當元件的容器實現了具體的功能。
    Transform變換元件決定了每個物件在場景中的位置,比例和旋轉,每個物件都有一個變換元件。
    元件(Component)是用來繫結到遊戲物件(Game Object)上的一組相關屬性。本質上每個元件是一個類的例項。
  2. 描述下圖中 table 物件(實體)的屬性、table 的 Transform 的屬性、 table 的部件
    table的物件是GameObject,第一個選擇框是activeSelf 屬性,第二個文字框是物件名稱,第三個選擇框為static屬性。第二行有Tag屬性和Layer屬性,第三行為prefabs(預設)屬性。Transform屬性包括position(位置),Rotation(旋轉),Scale(比例)。Component物件有Transform,Mesh Filter,Box Collider,Mesh Renderer。
  3. 用 UML 圖描述 三者的關係
    這裡寫圖片描述
4. 整理相關學習資料,編寫簡單程式碼驗證以下技術的實現:
  • 查詢物件
  • 新增子物件
  • 遍歷物件樹
  • 清除所有子物件
        //按名字查詢
        var cubeF = GameObject.Find("Cube");
        if (null != cubeF) {
            Debug.Log ("find cube");
        }
        cubeF = GameObject.Find ("/Cube");
        if (null != cubeF)
            Debug.Log ("find cube~");
        //按標籤查詢
        var sphere = GameObject.FindWithTag("Sphere");  
        if (null != sphere)  
        {  
            Debug.Log("Sphere~");  
        } 
        //新增子物件到init
        GameObject circle = GameObject.CreatePrimitive (PrimitiveType.Sphere);
        circle.transform.position = new Vector3 (2, 2, 2);
        circle.transform.parent = father.transform;
        //遍歷物件樹
        GameObject[] game = GameObject.FindObjectsOfType<GameObject>();
        foreach (GameObject tem in game) {
            Debug.Log (tem.name);
        }
        //刪除所有子物件
        foreach (GameObject tem in game) {
            GameObject.Destroy (tem);
        }
5. 資源預設(Prefabs)與 物件克隆 (clone)
  1. 預設(Prefabs)有什麼好處?
    1.使物件和資源能夠重複利用。
    2. 相同的遊戲物件可以用同一個預製來建立。
    3. 對預設進行修改後,所有的遊戲物件都會發生改變。
    總體而言,預設資源儲存了完整儲存了物件的元件和屬性,相當於模板,使用預製能夠方便我們建立相同的遊戲物件並賦予他們相同的行為,比如用一塊磚建立一堵牆。
  2. 預設與物件克隆 (clone or copy or Instantiate of Unity Object) 關係?
    1. 克隆遊戲物件需要場景中有被克隆物件,而建立預製只需事先建立預製即可,允許場景中一開始並不存在該遊戲物件。
    2. 克隆出來的遊戲物件並不會隨著被克隆體的變化而發生變化,但是使用預製創建出來的物件會隨著預製的改變而發生改變。
  3. 製作 table 預製,寫一段程式碼將 table 預製資源例項化成遊戲物件
GameObject prefab = (GameObject)Instantiate (prefab1);
6. 嘗試解釋組合模式(Composite Pattern / 一種設計模式)。使用 BroadcastMessage() 方法, 向子物件傳送訊息。
  • 答:組合模式允許使用者將物件組合成樹形結構表現“整體-部分”的層次結構,使得客戶以一致的方式處理單個物件以及物件的組合,組合模式實現的關鍵地方是單個物件與複合物件必須實現相同的介面,這就是組合模式能夠將組合物件和簡單物件進行一致處理的原因。
    父物件:
    void test(){
        Debug.Log ("Hello world");
    }
    // Use this for initialization
    void Start () {
        this.BroadcastMessage ("test");
    }        

子物件:

     void test(){
        Debug.Log ("Hello world");
    }

相關推薦

Unity3d離散模擬引擎基礎

1. 解釋物件與資源的區別與聯絡 物件:物件直接出現在遊戲場景中,是資源整合的具體表現,物件一般有玩家,敵人,遊戲場景,攝像機等虛擬父類,這些父類沒有例項化,而他們的子類例項化幷包含了這些遊戲物件,我們可以對這些物件進行操作。 資源:資源可以是我們自定義或下

用 php 實現一個視圖組件和模板引擎——基礎

view content 如何實現 目前 內容 復用 tty 結構 有效 只要不是做後端接口開發和一些作為守護進程之類的服務器腳本,大多數時候都是在和瀏覽器打交道,因此合理組織並展現 html 標簽是最為常見的工作。一般大家使用框架時,都會自帶有一套視圖組件和模板引擎。

three.js引擎基礎知識—攝像機、場景及渲染器

blog new ram end 內部 渲染器 tro element col 一、three.js采用右手坐標系: x軸正方向向右,y軸正方向向上,z軸由屏幕從裏向外,如下圖右: 二、3D編程三要素:場景、渲染器、攝像機 1.場景:創建的物品和模型都需放入場景中 t

搜索引擎基礎概念(3)—— 倒排列表

相關 整數 原因 tro tex 進行 大於 http 1-1   倒排列表     倒排列表用來記錄有哪些文檔包含了某個單詞。一般在文檔集合裏會有很多文檔包含某個單詞,每個文檔 會記錄文檔編號(DocID),單詞在這個文檔中出現的次數(TF)及單詞在文檔中哪些位置出現過等

Unity3d學習之路-基礎概念

Unity3d-基礎概念 1、簡答題 解釋遊戲物件(GameObjects) 和 資源(Assets)的區別與聯絡。 答:遊戲物件是一種容器。它們是空盒,能夠容納元件。根據要建立的物件型別,可以新增不同的元件組合到遊戲物件中。 資源可以新增到遊戲物件上,例如材質和動

NVIDIA 宣佈開源物理模擬引擎 PhysX SDK

   NVIDIA 宣佈12月20日推出 PhysX SDK 4.0,並將在 3-Clause BSD 許可證下進行開源。 PhysX 曾是 NVIDIA 私有的物理引擎,被用於受爭議的圖形中介軟體 NVIDIA GameWo

離散結構:基礎結構:集合,函式,序列,總和,和矩陣(Basic Structure:Set,Function,Sequences,Sums and Matrixes )(1)

第二章: 章節彙總: 集合: 集合語言,集合操作,集合 函式: 函式種類,函式操作,可計算性 序列: 序列種類,求和公式 總和: 可數集 矩陣: 矩陣算術 Chapter Summary Sets The Language of Se

InnoDB儲存引擎基礎

分散式儲存中指明瞭儲存的下層就是儲存引擎,所以就拿一個實際的儲存引擎進行學習瞭解,儲存引擎究竟是如何操作使用的。下面對InnoDB儲存引擎做一個簡單的總結。 1、什麼是InnoDB儲存引擎,在此儲存引擎上支撐的什麼樣的資料庫 InnoDB目前支援上層的資料庫為M

Unity3D實戰】零基礎一步一步教你製作酷跑類遊戲(1)

首先做個自我介紹,我是一名在讀的大三學生,軟體工程遊戲開發方向。 一直以來,我夢想著成為一名遊戲開發者,所以在大三分方向時我毫不猶豫地選擇了遊戲開發方向。剛剛接觸 Unity3D一段時間,現在需要大量

Unity3D實戰】零基礎一步一步教你製作跑酷類遊戲(填坑完整版)

在兩個月前曾寫了一篇《【Unity3D實戰】零基礎一步一步教你製作跑酷類遊戲(1)》,裡面一步一步演示了製作跑酷類遊戲,然而由於時間原因,只寫到了讓角色往前移動為止。這個坑一直沒有時間去填,(雖然也沒

離散數學01——基礎知識

基礎知識: 一、集合 1、若干個可確定、可分辨的物件構成的無序整體稱為集合(set),常用大寫英文字母A,B,C,X,Y,Z等表示。 例: R:“方程x^2-2=0的所有實數解”是集合。 Q:“清華大學的所有學生”是集合。 “很大的實數”不是集合。 “清

SystemC簡化模擬引擎簡介

 以下簡化的流程圖說明了SystemC模擬核心的操作流程。 首先,如前面“modules”中所討論的那樣進行詳細說明。 在elab過程中,構建SystemC模組並建立各種模擬引數。 這個elab階段之後是對sc_start()的呼叫,它呼叫模擬核心。 此呼叫開始初始化階

Unity3D外掛】NGUI基礎學習筆記

1、DrawCall:在Unity中,每次引擎準備資料並通知GPU的過程稱為一次Draw Call。Draw Call值越低,會得到更好的渲染效能。 Draw Call Tool:NGUI--》Open--》Draw Call Tool,可以檢視DrawCall的一些資訊。 影響DrawCall的因素: At

Physx Unity3D同步模擬

對於同步,碰撞等效果需要引入物理引擎進行模擬的。就涉及到伺服器和客戶端同時模擬同步的問題。經過一定時間的測試,已經能夠在客戶端使用Unity3D 3.4.2伺服器使用Phyxs 2.8.1的情況下,實現直線運動和碰撞上的同步。但是由於客戶端和伺服器幀率上存在的差別,所以對

物理運動模擬引擎

[from:http://www.gaoang.com/]Phun源自於瑞典UMU大學碩士生的畢業論文,可以模擬物體的各種物理運動規律。使用者可以通過滑鼠繪圖來建立物體,並讓物體實驗重力、摩擦力、彈力、加速度等等不同的物理規律。C++編寫的Phun使用了OpenGL、GLEW

Chrome學習筆記(二):UI元件,面板引擎 —— 基礎設施篇

本文連結地址:Chrome學習筆記(二):UI元件,面板引擎 —— 基礎設施篇 Chrome的UI是很奇妙的,因為看起來能很好的跨平臺,而且可以很好的相容各個平臺的特性,比如在Mac下最小化和關閉按鈕在左側,還相容全屏的特性,在Linux上,也能載入GTK的外框,外加現在Chrome在推的Aura,更是直

開源模擬引擎ODE(Open Dynamics Engine)環境搭建

Codeblocks 版本16.01 因為模擬需要,找到了這個軟體,官網資料有點舊,比較雜亂,記錄下安裝步驟。 下載原始碼   安裝codeblocks程式碼編輯器和premake編譯工具。 sudo add-apt-repository ppa:damien-

Git 沙盒模擬實戰(基礎篇)

# Git 沙盒模擬實戰 ## 分支 現有一個主分支 ![image-20200911190747381](https://i.loli.net/2020/09/11/8fRnNQYUWXbA6Ex.png) ### 建立分支 ~~~shell # 建立分支 $ git branch bugFi

Unity3D遊戲引擎最詳盡基礎教程

轉自:http://blog.sina.com.cn/s/blog_7c336a8301013son.html 我一直向所有想做遊戲的朋友推薦Unity3D,為什麼呢?首先是因為專業,Unity3D非常強大,用它建立一個類似MiniGore這樣的3D平面射擊遊

基於Babylon.js編寫宇宙飛船模擬程式1——程式基礎結構、物理引擎使用、三維羅盤

計劃做一個宇宙飛船模擬程式,首先做一些技術準備。 可以訪問https://ljzc002.github.io/test/Spacetest/HTML/PAGE/spacetestwp2.html檢視測試場景,按住qe鍵可以左右傾斜相機。可以在https://github.com/ljzc002/ljzc