2020-12-16Unity 重要基礎知識點

腳本生命周期

//每當腳本被加載時調用一次

// 1.   在Awake中做一些初始化操作

void Awake(){

//初始化public成員

}

// 2. 在每次激活腳步時調用

void OnEnable(){}

//在第一次調用Update之前調用一次Start释液,即使取消激活,再激活也不會再執(zhí)行

// 3. 在Start中做一些初始化操作

void Start(){

//一般做一些私有成員

}

// 4. 每幀調用一次Update

void Update(){}

// 5. 在Update方法調用完之后調用

void LateUpdate(){}  //如刷新完邏輯操作

// 6. 取消激活狀態(tài)后調用

void OnDisable(){}

// 7. 腳步被銷毀時調用

void OnDestroy(){}  //如怪物死亡爆東西

// 8. 持續(xù)調用 - IMGUI代碼需要寫在OnGUI 方法中和UGUI刨晴,NGUI

void OnGUI(){

}

// 9. 以固定的頻率調用磁椒,不會受到圖像刷新幀速率的影響

//一般我們會把處理物理的代碼放在這里

void FixedUpdate(){}
Input

//n參數(shù) 0 鼠標左鍵

//n參數(shù) 1 鼠標右鍵

//n參數(shù) 2  鼠標中建

Input.GetMouseButtonDown(n)  //檢測鼠標按鍵按下事件

Input.GetMouseButtonUp(n) //檢測鼠標按鍵彈起事件

Input.GetMouseButton(n) //檢測鼠標持續(xù)按下的事件

GameObject

//gameObject 獲取當前腳本所掛載的游戲對象

//一般來說,在屬性視圖中能看到或修改的屬性,我們同樣可以在腳本中獲取并修改

gameObject屬性如

1. name  、tag  吴攒、

2. gameObject.activeSelf   //獲取當前游戲對象的激活狀態(tài) bool類型

3. gameObject.SetActive   //設置游戲對象的激活狀態(tài)

//4. 獲取游戲對象身上的組件 如

controller c = gameObject.GetComponent<objectname>();

//5. 給游戲對象添加指定類型的組件

Light l = game.AddComponent<Light>();

//6. 通過tag值查找游戲對象

GameObject g = GameObject.FindGameObjectWithTag(“TagName”);

GameObject gg = GameObject.FindWithTag(“TagName”);

//7. 通過游戲對象名查找游戲對象

GameObject g = GameObject.Find(“Object Name”):

g.name = “改名”;

//8. 通過Tag值查找多個游戲對象

GameObject [] gs = GameObject.FindGameObjectWithTag(“Object Name”);

//9. 銷毀游戲對象 可加參數(shù)2:延遲時間(s)后銷毀

GameObject.Destroy(gameObject,2f);

Vector

1. 一個類张抄,表示向量,向量既有大小又有方向的量

Vector3  v = new  Vector3();

成員方法:

  1. //獲取V的單位向量 V的長度會變成1洼怔,但方向不變
v.Normalize();
  1. //返回V方向上的單位向量署惯,但是V本身不會發(fā)生變化
Vector3 vn = v.normalized;
  1. //獲取V的長度
float l = v.magnitude;
  1. 類方法:
// x=0,y=1,z=0

Vector3.up 表示世界坐標系中Y軸正方向的單位向量

// x=0,y=-1,z=0

Vector3.down 表示世界坐標系中Y軸負方向的單位向量

// x=1,y=0,z=0

Vector3.right 表示世界坐標系中X軸正方向的單位向量

// x=-1,y=0,z=0

Vector3.left 表示世界坐標系中X軸負方向的單位向量

// x=0,y=0,z=1

Vector3.forward 表示世界坐標系中Z軸正方向的單位向量

// x=0,y=0,z=-1

Vector3.back 表示世界坐標系中Z軸負方向的單位向量

// x=0,y=0,z=0

Vector3.zero 表示原點

 
  1. //求兩個向量的夾角 參數(shù)都是Vector的對象
float f = Vector.Angle(V1,V2);
  1. //求兩個向量的距離

float f = Vector.Distance(V1,V2);

  1. //向量點乘

float d = Vector3.Dot (v1,v2);

//兩個向量的叉積

Vector vc = Vector3.Cross(v1,v2);

Transform

//獲取當前腳本所掛載的游戲對象身上的Transform組件

//transform

  1. //控制游戲對象的位置、旋轉镣隶、縮放

//position 屬性 - 世界坐標系中的位置

Vector3 pos = transform.position;

  1. //localPosition 屬性 - 局部坐標系中的位置

transform.localPosition

  1. //一般不直接修改四元數(shù)

transform.rotation

transform.localRotation

  1. 快捷鍵:對象

Q平移 W移動 E旋轉 R縮放

  1. //localScale - 控制游戲對象的縮放

Vector3 v = transform.localScale;

  1. //變換當前游戲對象

transform.Translate (new Vector3(0,1,0));

  1. //旋轉當前游戲對象

transform.Rotate (Vector.up,10f);

  1. //歐拉角 - 屬性(直接旋轉角度极谊,不會重復旋轉)

transform.eulerAngles = new Vector(0f,45f,0f);

  1. //控制游戲對象間的父子關系

//獲取/重新指定 當前游戲對象父對象的transform組件

transform.parent;

  1. //獲取當前游戲對象的根父對象

transform.root;

  1. //獲取當前游戲對象 叫做name 的子對象

transform.Find(“name”);

transform.FineChild(“name”);

Time

  1. //Time類用來進行時間控制

float t = Time.time; (從游戲開始到當前所用時間)

  1. //從上一幀開始到當前幀結束,這兩幀之間的時間間隔

Time.deltaTime

  1. //讓當前游戲對象每秒準確地旋轉 30 度

transform.Rotate(Vector3.up , Time.deltaTime * 30f);

  1. //表示時間流逝的快慢

// 1 - 表示正常時間流逝

// 2- 表示時間流逝加快安岂,是正常速度的兩倍

// 0 - 表示時間停止轻猖,游戲暫停

float ts = Time.timeScale;

Mathf

  1. //求絕對值

int i = Mathf.Abs(-12);

  1. //求最大最小值

int m = Mathf.Max(12,15,15,17);

int ni = Mathf.Min(12,14);

  1. //三角函數(shù)

Mathf.Sin();

Mathf.Cos();

Mathf.PI();

Mathf.Sqrt(); //平方根

Prefab 預設體

例子:

public GameObject playerPrefab; //預設體 從外面掛載進來

Vector pos = new Vector3 ();

pos.y = 0.5;

pos.x = Random.Range(-5f,5f); //給一個范圍隨機數(shù)產(chǎn)生坐標

pos.z = Random.Range(-5f,5f);

float angle = Random.Range.Range (0f,360f);

  1. 動態(tài)添加預設體

//參數(shù)1:預設體

參數(shù)2: 創(chuàng)建出的游戲對象初始位置

參數(shù)3: 創(chuàng)建出的游戲對象初始旋轉角度 四元數(shù)旋轉角 (不需要的參數(shù)都可不加)

Instantiate (plagerPrefab , pos , Quaternion.AngleAxis (angle, Vector3.up));

  1. 若要接收,Instantiate返回的類型是object,所以要轉換

GameObject g = Instantiate (plagerPrefab , pos , Quaternion.AngleAxis (angle, Vector3.up)) as GameObject;

g.AddComponent<Light>(); 可往添加組件

鼠標事件

必須物體的Collider被激活,否則無法觸發(fā)

  1. 當鼠標點擊下去時調用

void OnMouseDown(){}

  1. 當鼠標持續(xù)按下左鍵不放時調用(可在物體外松開取消調用)

void OnMouseDrag(){}

  1. 當鼠標取消點擊時調用

void OnMouseUp(){}

4 當鼠標進入到內部時調用

void OnMouseEnter(){}

  1. 當鼠標持續(xù)停留在游戲對象身上時調用

void OnMouseOver(){}

  1. 當鼠標離開內部時調用

void OnMouseExit(){}

  1. 當我們像點擊按鈕一樣點擊游戲對象(在對象內部松開才能生效域那,離開物體無效)

void OnMouseUpAsButton

剛體 Rigidbody

剛體使用使物體位移和transform同時使物體位移是不對的咙边,只能使用其中一個

屬性:

Mass質量

Drag空氣阻力

Angular Drag角阻力(旋轉時受的)

Use Gravity 重力影響

Is Kinematic 是否使用運動學

Interpolate 插值 (如物體不停的顫抖時可試用)

內插值 Interpolate

根據(jù)上一幀的位置推算這一幀的位置

外插值 Extrapolate

預測下一幀的位置推算這一幀的位置

Constrains Detection 碰撞檢測

Discrete 離散碰撞檢測

Continuous 連續(xù)碰撞檢測 (如子彈速度太快,上下幀時已經(jīng)傳過障礙物次员,對高速運動)

Continuous Dynamic 連續(xù)動態(tài)碰撞檢測 (兩個都是高速的碰撞)

Constraints 約束

讓物體在某個軸上無法位移

freezePosition

讓物體在某個軸上無法旋轉

freezeRotation

Rigidbody rb = GetComponent<Rigidbody>();

//添加力  力的物體上必須有剛體

要有添加爆炸力腳本的對象才會受影響

  1. //給當前游戲對象施加一個力

rb.AddForce(new Vector3(0f,10f,0f));

  1. //給當前游戲對象添加力矩/扭矩败许,扭矩可以使物體旋轉

rb.AddTorque(new Vector3(0f,10f,0f));//y軸施力

  1. //給游戲對象在指定的位置上添加一個力

rb.AddForceAtPosition(new Vector3(0f,10f,0f), new Vector(0.5f,0.5f,0.f));

  1. //在指定位置添加一個爆炸力

//參數(shù)1:爆炸力大小 參數(shù)2:爆炸位置 參數(shù)3:爆炸范圍半徑

rb.AddExplosionForce(1500f, Vector.zero,4f);

Collider

發(fā)生碰撞的條件:

1.雙方都有Collider,2.至少一方有剛體, 3.兩個物體之間發(fā)生相互運動

(去碰撞的物體最好要有剛體淑蔚,否則可能發(fā)生穿越市殷,無觸發(fā)碰撞 )

  1. //碰撞相關的三個事件

//碰撞開始時會調用一次

void OnCollisionEnter (Collision other){}

  1. //當碰撞持續(xù)發(fā)生的時候調用

void OnCollisionStay (Collision other){//檢測跟誰發(fā)生了碰撞

if(string.Equals (“Cube2” , other,gameObject.name))

}

  1. //碰撞結束時調用一次

void OnCollisionExit (Collision other){}

Trigger

如果Collider中的 is Trigger選中了,那么該物體無法使用剛體刹衫,但能使用觸發(fā)器

觸發(fā)器事件條件:

1.雙方有Collider 2.一方勾選Trigger 3.一方有剛體 (或角色體Character)

4.進入觸發(fā)范圍后不用一定要有相對運動

觸發(fā)器相關的三個事件 //如 CS進入安全區(qū)

  1. //剛剛進入觸發(fā)范圍時調用一次

void OnTriggerEnter (Collider other){}

  1. //持續(xù)待在觸發(fā)范圍內會一直調用

void OnTriggerStay (Collider other){}

  1. //離開觸發(fā)范圍時會調用一次

void OnTriggerExit (Collider other){}

材質

Create -> Physic Material 只有在有Collider得物體上才能添加

Physic Material 物理材質

屬性

Dynamic Friction 動摩擦力 A在B運動受到的摩擦力

Static Friction 靜摩擦力

Bounciness 彈性

彈力摩擦力結合情況

Friction Combine

Bounce Combine

子屬性: Average 平均值

Minimum 最小值

Multiply 相乘

Maximum 最大值

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末醋寝,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子带迟,更是在濱河造成了極大的恐慌甥桂,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,406評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件邮旷,死亡現(xiàn)場離奇詭異黄选,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,395評論 3 398
  • 文/潘曉璐 我一進店門办陷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來貌夕,“玉大人,你說我怎么就攤上這事民镜》茸ǎ” “怎么了?”我有些...
    開封第一講書人閱讀 167,815評論 0 360
  • 文/不壞的土叔 我叫張陵制圈,是天一觀的道長们童。 經(jīng)常有香客問我,道長鲸鹦,這世上最難降的妖魔是什么慧库? 我笑而不...
    開封第一講書人閱讀 59,537評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮馋嗜,結果婚禮上齐板,老公的妹妹穿的比我還像新娘。我一直安慰自己葛菇,他們只是感情好甘磨,可當我...
    茶點故事閱讀 68,536評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著眯停,像睡著了一般济舆。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上莺债,一...
    開封第一講書人閱讀 52,184評論 1 308
  • 那天吗冤,我揣著相機與錄音,去河邊找鬼九府。 笑死椎瘟,一個胖子當著我的面吹牛,可吹牛的內容都是我干的侄旬。 我是一名探鬼主播肺蔚,決...
    沈念sama閱讀 40,776評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼儡羔!你這毒婦竟也來了宣羊?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,668評論 0 276
  • 序言:老撾萬榮一對情侶失蹤汰蜘,失蹤者是張志新(化名)和其女友劉穎仇冯,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體族操,經(jīng)...
    沈念sama閱讀 46,212評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡苛坚,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,299評論 3 340
  • 正文 我和宋清朗相戀三年比被,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片泼舱。...
    茶點故事閱讀 40,438評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡等缀,死狀恐怖,靈堂內的尸體忽然破棺而出娇昙,到底是詐尸還是另有隱情尺迂,我是刑警寧澤,帶...
    沈念sama閱讀 36,128評論 5 349
  • 正文 年R本政府宣布冒掌,位于F島的核電站噪裕,受9級特大地震影響,放射性物質發(fā)生泄漏股毫。R本人自食惡果不足惜膳音,卻給世界環(huán)境...
    茶點故事閱讀 41,807評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望皇拣。 院中可真熱鬧严蓖,春花似錦薄嫡、人聲如沸氧急。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,279評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽吩坝。三九已至,卻和暖如春哑蔫,著一層夾襖步出監(jiān)牢的瞬間钉寝,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,395評論 1 272
  • 我被黑心中介騙來泰國打工闸迷, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留嵌纲,地道東北人。 一個月前我還...
    沈念sama閱讀 48,827評論 3 376
  • 正文 我出身青樓腥沽,卻偏偏與公主長得像逮走,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子今阳,可洞房花燭夜當晚...
    茶點故事閱讀 45,446評論 2 359

推薦閱讀更多精彩內容