Unity知識點大彙總

2022-07-03 04:03:14 字數 4006 閱讀 1116

指令碼生命週期

//每當指令碼被載入時呼叫一次

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

void awake()

//在第一次呼叫update之前呼叫一次start,即使取消啟用,再啟用也不會再執行

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

void start()

// 5.   在update方法呼叫完之後呼叫

void lateupdate(){}  //如重新整理完邏輯操作

// 6.   取消啟用狀態後呼叫

void ondisable(){}

// 7.   腳步被銷毀時呼叫

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

// 8.   持續呼叫  - imgui**需要寫在ongui 方法中和ugui,ngui

void ongui()

input

//n引數 0 滑鼠左鍵

//n引數 1 滑鼠右鍵

//n引數 2  滑鼠中建

input.getmousebuttondown(n)  //檢測滑鼠按鍵按下事件

gameobject

//gameobject 獲取當前指令碼所掛載的遊戲物件

//一般來說,在屬性檢視中能看到或修改的屬性,我們同樣可以在指令碼中獲取並修改

gameobject屬性如

controller c = gameobject.getcomponent();

light l = game.addcomponent();

gameobject g  = gameobject.findgameobjectwithtag(「tagname」);

gameobject gg = gameobject.findwithtag(「tagname」);

gameobject g = gameobject.find(「object name」):

g.name = 「改名」;

gameobject gs = gameobject.findgameobjectwithtag(「object name」); 

gameobject.destroy(gameobject,2f);

vector

vector3  v = new  vector3();

成員方法:

v.normalize();

vector3 vn = v.normalized;

float l = v.magnitude;

float f = vector.angle(v1,v2);

float f = vector.distance(v1,v2);

float d = vector3.dot (v1,v2);

vector vc  = vector3.cross(v1,v2);

transform

//獲取當前指令碼所掛載的遊戲物件身上的transform元件

//transform

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

vector3 pos = transform.position;

transform.localposition

transform.rotation

transform.localrotation

vector3 v = transform.localscale;

transform.translate (new vector3(0,1,0));

transform.rotate (vector.up,10f);

transform.eulerangles = new vector(0f,45f,0f);  

//獲取/重新指定 當前遊戲物件父物件的transform元件

transform.parent;

transform.root;

transform.find(「name」);

transform.finechild(「name」);

time

time.deltatime

transform.rotate(vector3.up , time.deltatime * 30f);

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

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

// 0 - 表示時間停止,遊戲暫停

float ts = time.timescale;

mathf 

int i  = mathf.abs(-12);

int m =  mathf.max(12,15,15,17);

int ni = mathf.min(12,14);

mathf.sin();

mathf.cos();

mathf.pi();

prefab 預設體

例子:vector pos = new vector3 ();

pos.y  =  0.5;

pos.z  =  random.range(-5f,5f); 

float angle = random.range.range (0f,360f);

//引數1:預設體  

引數2:  建立出的遊戲物件初始位置  

instantiate (plagerprefab , pos , quaternion.angleaxis (angle, vector3.up));

gameobject g =  instantiate (plagerprefab , pos , quaternion.angleaxis (angle, vector3.up)) as gameobject;

滑鼠事件

必須物體的collider被啟用,否則無法觸發 

void onmousedown(){}

void onmousedrag(){}

void onmouseup(){}

void onmouseenter(){}

void onmouseover(){}

void onmouseexit(){}

void onmouseupasbutton

剛體 rigidbody

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

屬性:mass質量

drag空氣阻力

angular drag角阻力(旋轉時受的)

is kinematic  是否使用運動學

rigidbody rb = getcomponent();

//新增力  力的物體上必須有剛體

要有新增**力指令碼的物件才會受影響

rb.addforce(new vector3(0f,10f,0f));

rb.addtorque(new vector3(0f,10f,0f));//y軸施力

rb.addforceatposition(new vector3(0f,10f,0f), new vector(0.5f,0.5f,0.f));

rb.addexplosionforce(1500f, vector.zero,4f);

collider

發生碰撞的條件: 

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

//碰撞開始時會呼叫一次

void oncollisionenter (collision other){}

void oncollisionstay (collision other)

trigger

如果collider中的 is trigger選中了,那麼該物體無法使用剛體,但能使用觸發器

觸發器事件條件:

4.進入觸發範圍後不用一定要有相對運動

void ontriggerenter (collider other){}

void ontriggerstay (collider other){}

void ontriggerexit (collider other){}

材質屬性

彈力摩擦力結合情況

friction combine

bounce combine

unity知識點小結

1 通過gameobject.find 玩家物體 getcomponent 獲取玩家的player指令碼 2 quaternion.identity就是指quaternion 0,0,0,0 就是每旋轉前的初始角度,是乙個確切的值,而transform.rotation是指本物體的角度,值是不確定的...

演算法知識點彙總

1.求陣列元素之間相鄰的元素個數或者求字串的長度 指向同乙個陣列的不同元素的兩個指標可以相減,其差便是兩個指標之間相隔的元素個數。例如在乙個字串中,讓乙個指向該串的首元素,讓另乙個指向字串的結束符,兩個指標相減,其差便是字串的長度 2.怎樣判斷兩個指標指向的是陣列的同乙個元素?指標可以互相比較。如指...

小知識點彙總

1 為什麼乙個數的各位數之和可以被3整除時,這個數就可以被3整除 設乙個n位數number,從個位起每一位為a1 an 則number a1 a2 10 a3 10 2 an 10 n 1 1 先證必要性 如果number的各位數之和是3的倍數,則a1 a2 an 3k k為正整數 2 由 2 得a...