日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

[小巩u3d] u3d基础知识

發布時間:2025/3/21 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [小巩u3d] u3d基础知识 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.Unity3d中的碰撞器和觸發器的區別?

碰撞器是觸發器的載體,而觸發器只是碰撞器身上的一個屬性。

當Is Trigger=false時,碰撞器根據物理引擎引發碰撞,產生碰撞的效果,可以調用OnCollisionEnter/Say/Exit函數;

當Is Trigger=true時,碰撞器被物理引擎忽略,沒有碰撞效果,可以調用OnTriggerEnter/Stay/Exit函數。

如果既要檢測到物體的接觸又不想讓碰撞檢測影響物體移動或要檢測一個物體是否經過空間中的某個區域這時就可以用到觸發器。

2.物體發生碰撞的必要條件?

兩個物體都必須帶有碰撞器(Collider),其中一個物體還必須帶有Rigidbody物體,而且必須是運動的物體帶有Rigidbody腳本才能檢測到碰撞。

3.CharacterController和RIgidbody的區別

Rigidbody具有完全真實物理的特性,Unity中物理系統最基本的一個組件,包含了常用的物理特性,而CharacterController可以說是受限的Rigidbody,具有一定的物理效果但不是完全真實的,它不會受力的作用,是Unity為了使開發者能方便的開發第一人稱視角的游戲而封裝的一個組件。

4.獲取、增加、刪除組建的命令分別是什么?

獲取:GetComponent ?增加:AddComponent ?刪除:Destroy

5.調試記錄到控制臺的命令是什么?

Debug.Log();或者print();

6.Prefab的作用?如何在移動環境的設備下恰當地使用它?

Prefab是預設體,在實例化的時候用到,主要用于經常會用到的物體,屬性方便修改。 在游戲運行時實例化,Prefab相當于一個模板,對已經有的素材、腳本、參數做一個默認的配置,以便于以后的修改,同時Prefab打包的內容簡化了導出的操作,便于團隊的交流。

7.導航網格尋路一般要經過哪些步驟實現對目標的查找?

一般經過四個步驟來實現: (1)選擇除了主角、目標以及攝像機、直線光以外的所有物體,在Inspector窗口的右上角勾選Static,稱為靜態物體,并設置為Navigation Static靜態類型。 (2)在主窗口中選擇[Window]→[Navigation],打開Navigation窗口。該窗口用于生成路徑尋找所需要的導航網格尋路,代理將根據該導航網格進行尋路計算。確保勾選了“Navigation Static”。點擊Bake進行烘培。 (3)選擇需要尋路的游戲對象,為它添加一個NavMeshAgent組件。 (4)編寫尋路代碼,新建一個腳本。 尋路代碼: [csharp]?view plaincopy
  • //尋找的目標??
  • public?Transform?TransHero;??
  • private?NavMeshAgent?agent;??
  • //找到場景中的NavMesh代理??
  • agent=this.GetComponent<NavMeshAgent>();??
  • if(agent&&TransHero)??
  • {??
  • ????//使得代理不斷尋找目標點的位置??
  • ????agent.SetDestination(TransHero.transform.position);??
  • }??
  • 8.解釋以下代碼的各個參數的含義:

    [csharp]?view plaincopy
  • void?OnGUI()??
  • {??
  • ????GUI.Label(new?Rect(0,0,200,100),"ABC");??
  • ????strInput=GUI.TextField(new?Rect(0,50,100,50),“strInput");??
  • ????strTextArea?=?GUI.TextArea(new?Rect(0,110,200,100),?strTextArea);??
  • ????strPW?=?GUI.PasswordField(new?Rect(0,220,200,100),?strPW,'*');??
  • ????GUI.Button(new?Rect(0,330,100,30),“確定");??
  • }??
  • 用一個簡單的demo實現上面的GUI,實現代碼(并有注釋解釋了代碼的各個參數的含義):

    ?

    [csharp]?view plaincopy
  • using?UnityEngine;??
  • using?System.Collections;??
  • ??
  • public?class?showGUI?:?MonoBehaviour??
  • {??
  • ????private?string?strInput;??
  • ????private?string?strTextArea;??
  • ????private?string?strPW;??
  • ??
  • ????void?OnGUI()??
  • ????{??
  • ????????GUI.Label(new?Rect(0,?0,?200,?100),?"ABC");//在(0,0)位置創建一個寬為200,長為100的標簽,在標簽上顯示的文本ABC??
  • ????????strInput?=?GUI.TextField(new?Rect(0,?50,?100,?50),?"strInput");//在(0,50)位置創建一個寬為100,長為50的輸入框,默認文本為strInput??
  • ????????strTextArea?=?GUI.TextArea(new?Rect(0,?110,?200,?100),?"strTextArea");//在(0,110)位置創建一個寬為200,長為100的多行文本輸入框,默認文本為strTextArea??
  • ????????strPW?=?GUI.PasswordField(new?Rect(0,?220,?200,?100),?"strPW",?'*');//在(0,220)位置創建一個寬為200,長為100的密碼字段,默認密碼為strPW,用*號字符遮罩??
  • ????????GUI.Button(new?Rect(0,?330,?100,?30),?"確定");//在(0,330)位置上創建一個寬為100,長為30的按鈕,在按鈕上顯示的文本為確定??
  • ????}??
  • }??
  • 實現效果:

    ?

    9.組件的動態調用

    cube1.AddComponent("script1");//把script1這個腳本添加到cube1這個組件上 Destory(cube1.GetComponent("scripts"));//銷毀cube1對象上附加的腳本組件實例 Destory(cube1.GetComponent<script1>()); 可以運用GetComponent<腳本名稱>().字段名稱,進行間的數據傳遞。

    10.射線的使用

    射線是一個點向另外一個點發生的一條線,一旦與其他模型發生碰撞,它將停止發射。注意這條線是邏輯上的,界面上看不到。一般使用射線判斷是否發射至某個游戲對象上或者獲得鼠標點擊的游戲對象等。 射線是從攝像機發出去的。 關鍵代碼: [csharp]?view plaincopy
  • Ray?ray=Camera.main.ScreenPointToRay(Input.mousePosition);??
  • if(Physics.Raycast(ray,out?hit))//如果命中??
  • {??
  • ????print(hit.collider.gameObject);//可以獲得命中的游戲對象??
  • }??
  • //Physics.RaycastAll?投射一條光線返回所有碰撞??
  • 11.協程的含義。

    12.粒子系統的概念。

    轉載于:https://www.cnblogs.com/gonghongmiao/p/7794314.html

    總結

    以上是生活随笔為你收集整理的[小巩u3d] u3d基础知识的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。