指令碼生命週期
//每當指令碼被載入時呼叫一次
// 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...