欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解Unity入門之GameObject

 更新時間:2021年05月31日 14:44:14   作者:zhxmdefj  
Unity是一個Component-Based的引擎,所有物體都是GameObject。本文將詳細介紹GameObject和MonoBehaviour,感興趣的同學,可以參考下。

GameObject和Component

GameObject是游戲場景中真實存在的,而且有位置的一個物件

Component附屬于GameObject,控制GameObject的各種屬性

GameObject是由Component組合成的,Component的生命周期和GameObject息息相關。調用此GameObject的Destroy方法,它的子對象和對應的所有Component都會被銷毀,但也可以一次只銷毀一個Component

常見的Component:

Component 作用
RigidBody 剛體 使物體能在物理控制下運動
Collider 碰撞器 和RigidBody剛體一起使碰撞發(fā)生,沒有Collider,兩個碰撞的剛體會相互穿透
Renderer 渲染器 使物體顯示在屏幕上
AudioSource 音頻源 使物體在scence場景播放音頻
Animation 動畫
Animator 動畫控制器

同時所有腳本都是組件,因此都能附到游戲對象上

常用的組件可以通過簡單的成員變量獲取

附在游戲對象上的組件或腳本可以通過GetComponent獲取

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
    void Awake() {
        transform.Translate(0, 1, 0);
        GetComponent<Transform>().Translate(0, 1, 0);
    }
}

Input和InputManager

在InputManager可以創(chuàng)建虛擬軸和按鈕,并終端用戶可以在屏幕配置對話框配置鍵盤輸入。

如果想添加新的虛擬軸,選擇菜單Edit->Project Settings->Input menu。這里可以改變每個軸的設置。即可進入Input Manager的配置界面。

在腳本中,所有虛擬軸通過它們的名字(name)來訪問

每個項目創(chuàng)建后,都有下面的默認輸入軸:

  • Horizontal and Vertical are mapped to w, a, s, d and the arrow keys.水平和垂直被映射到w, a, s, d鍵和方向鍵
  • Fire1, Fire2, Fire3 are mapped to Control, Option (Alt), and Command, respectively.Fire1, Fire2, Fire3被分別映射到Ctrl,Option(Alt)和Command鍵
  • Mouse X and Mouse Y are mapped to the delta of mouse movement.Mouse X 和 Mouse Y被映射到鼠標移動增量
  • Window Shake X and Window Shake Y is mapped to the movement of the window.Window Shake X 和 Window Shake Y 被映射到窗口的移動

Time

Time類是Unity中的一個全局變量,它記載了和游戲相關的時間,幀數等數據

Time類包含一個非常重要的變量叫deltaTime.這個變量包含從上次調用Update 或FixedUpdate到現在的時間(根據你是放在Update函數還是FixedUpdate函數中)(Update每幀調用一次)

例:使物體在一個勻速的速度下旋轉,不依賴幀的速率

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
    void Update() {
        transform.Rotate(0, 5 * Time.deltaTime, 0);
    }
}

Physics和Transform

Physics類是一個工具函數類,它主要提供了Linecast和Raycast兩種射線投射方式。

  • Linecast是以投射的起始位置和終止位置為參數
  • Raycast則是以投射的起始位置和投射方向為參數

來判斷這個投射有沒有和某個Collider發(fā)生了碰撞。

using UnityEngine;
using System.Collections;

public class Example : MonoBehaviour {
    void Update() {
    // 使用Raycast
        Vector3 fwd = transform.TransformDirection(Vector3.forward);
        if (Physics.Raycast(transform.position, fwd, 10))
            print("There is something in front of the object!");
        // 使用Linecast
    Transform target;
    if (!Physics.Linecast(transform.position, target.position))
        ProcessData.AndDoSomeCalculations();
    }
}

在Physics這個模塊包含三個最重要的Component:RigidBody,Collision,Joint

  • RgidBody作為一個受力物體存在,所以可以向一個RigidBody施加Force(力),Drag(阻力)。同時RigidBody還有 velocity (速度),mass(質量),position(位置),旋轉(rotation)等屬性
  • Collider是為了處理物理中的碰撞事件而出現的類,如果沒有Collider,兩個RigidBody之間無法發(fā)生碰撞。同一個GameObject可以綁定多個Collider構建更加復雜的碰撞體結構。Collider也可以設置material,即Collider的物理材質。 用于調整摩擦力和碰撞單位之間的反彈效果。(當發(fā)生碰撞時,會觸發(fā)銷毀函數OnCollisionEnter,OnCollisionStay,OnCollisionExit等等
  • Joint用于連接兩個RigidBody,當Joint斷掉的時候會觸發(fā)OnJointBreak的回調函數。

MonoBehaviour

GameObject是游戲場景中真實存在的,而且有位置的一個物件

而控制GameObject則需要腳本組件

MonoBehaviour 是 Unity 中所有腳本的基類

MonoBehaviour is the base class from which every Unity script derives.

MonoBehaviour生命周期

在游戲里經常出現需要檢測敵人和我方距離的問題,這時如果要尋找所有的敵人,顯然要消耗的運算量太大了,所以最好的辦法是將攻擊范圍使用Collider表示,然后將Collider的isTrigger設置為True。最后使用OnTriggerEnter來做攻擊范圍內的距離檢測,這樣會極大提升程序性能。

腳本的基本結構

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using MyGame;  //3引用命名空間
public class player : MonoBehaviour {
       // Use this for initialization
       void Start () {
        GameData data;  //4才可以使用
       }
       // Update is called once per frame
       void Update () {
       }
}
namespace MyGame { //1定義命名空間
    class GameData { //2屬于MyGame下的類
    }
}

總結

Time,Input,Physics都是Unity中的全局變量

GameObject是游戲中的基本物件,是由Component組合而成的,GameObject本身必須有Transform的Component

GameObject是游戲場景中真實存在,而且有位置的一個物件

以上就是詳解Unity入門之GameObject的詳細內容,更多關于Unity入門之GameObject的資料請關注腳本之家其它相關文章!

相關文章

  • C#入參使用引用類型要加ref的原因解析

    C#入參使用引用類型要加ref的原因解析

    這篇文章主要介紹了C#入參使用引用類型要加ref的原因解析,我們在實際開發(fā)中還是能夠碰到一些引用類型添加ref的場景,其實道理也是一樣的,就是將引用類型的棧的地址傳遞到了方法中,那么和不添加有啥區(qū)別,感興趣的朋友跟隨小編一起看看吧
    2022-11-11
  • C#中的數據結構介紹

    C#中的數據結構介紹

    這篇文章介紹了C#中的數據結構,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-03-03
  • C# BackgroundWorker用法詳解

    C# BackgroundWorker用法詳解

    本篇文章主要介紹了C# BackgroundWorker使用詳解 ,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-04-04
  • C# 獲取數據庫中所有表名、列名的示例代碼

    C# 獲取數據庫中所有表名、列名的示例代碼

    這篇文章主要介紹了C# 獲取數據庫中所有表名、列名,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • c#之獲取本機主機名的四種方式總結

    c#之獲取本機主機名的四種方式總結

    這篇文章主要介紹了c#之獲取本機主機名的四種方式總結,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • 詳解c# 接口IDisposable的用法

    詳解c# 接口IDisposable的用法

    這篇文章主要介紹了詳解c# 接口IDisposable的用法,幫助大家更好的理解和學習c#,感興趣的朋友可以了解下
    2020-10-10
  • C#控制臺帶參數程序源碼編寫實例講解

    C#控制臺帶參數程序源碼編寫實例講解

    像ipconfig /all 這樣的CMD命令想必大家都知道,但是很多童鞋可能不知道怎么寫這樣的控制臺帶參數的程序,需要的朋友可以了解下
    2012-12-12
  • C# 實現ADSL自動斷網和撥號的方法(適用于撥號用戶)

    C# 實現ADSL自動斷網和撥號的方法(適用于撥號用戶)

    下面小編就為大家?guī)硪黄狢# 實現ADSL自動斷網和撥號的方法(適用于撥號用戶)。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-12-12
  • WPF實現雷達圖(仿英雄聯盟)的示例代碼

    WPF實現雷達圖(仿英雄聯盟)的示例代碼

    這篇文章主要介紹了如何利用WPF實現雷達圖(仿英雄聯盟)的繪制,文中的示例代碼講解詳細,對我們學習或工作有一定幫助,需要的可以參考一下
    2022-07-07
  • C#實現json格式轉換成對象并更換key的方法

    C#實現json格式轉換成對象并更換key的方法

    這篇文章主要介紹了C#實現json格式轉換成對象并更換key的方法,涉及C#操作json格式數據的相關技巧,需要的朋友可以參考下
    2015-06-06

最新評論