?????個人主頁:@元宇宙-秩沅
????? hallo 歡迎 點贊?? 收藏? 留言?? 加關注?!
????? 本文由 秩沅 原創(chuàng)
????? 收錄于專欄:unity每日一記
????推薦文章?
?【Unityc#專題篇】之c#系統(tǒng)化大禮包】
?【unity數(shù)據(jù)持久化】數(shù)據(jù)管理類_PlayerPrfs
?【unity本站最全系列】unity常用API大全一篇文章足以
?常見的類_篇【一】?
??(A) gameObject類
成員變量
-
名字: this.gameObject.name
-
是否激活:
this.gameObject.activeSelf -
是否是靜態(tài)
this.gameObject.isStatic -
層級
this.gameObject.layer -
標簽
this.gameObject.tag
創(chuàng)建幾何體
GameObject.CreatePrimitive(PrimitiveType.Cube);——正方體
查找——消耗性能
- 通過名字:GameObject.Find(“名字”);
- 通過標簽:GameObject.FindGameObjectWithTag(“標簽名”);
實例化
GameObject.Instantiate(xx);
銷毀
-
GameObject.Destroy(xx)
Destroy方法 本質上給這個對象加了一個移除標 一般情況下 它會在下一幀時把這個對象移除并從內(nèi)存中移除 如果沒有特殊需求 就是一定要馬上移除一個對象的話 建議使用上面的 Destroy方法 因為 是異步的 降低卡頓的幾率
場景不移除對象
-
GameObject.DontDestroyOnLoad( xx );
切換場景后物體會被刪除,該API對象 過場景不被刪除
添加腳本
- xx.AddComponent<腳本名>();
標簽比較
- this.gameObject.CompareTag(“xx”)
- this.gameObject.tag == “xx”
激活失活設置
- obj.SetActive(false);
??(B)MonoBehavior類
- ??transform.enable()+transform.Active
- ??xx.GetComponent<>()泛型獲取
- ??XX.GetComponent() as XX
- ??XX.GetComponent(Typeof()) as XX Typey類型獲取
- ??gameObject.name
- ?? new 腳本類型 [ ] yy / yy = this.GetComponents();//得到多個腳本
- ?? getComponentInChrild/Parent //子對象或父對象組件的獲取
- ??更安全的獲取腳本TryGetComponent<>();
???????1,鼠標回調(diào)事件函數(shù)
- 適用于界面操作
private void OnMouseDown()
{
print(“在掛載的物體身上按下了鼠標”);
}
private void OnMouseUp()
{
print(“在掛載的物體身上按下的鼠標抬起了”);
}
private void OnMouseDrag()
{
print(“在掛載的物體身上用鼠標進行了拖拽操作”);
}
private void OnMouseEnter()
{
print(“鼠標移入了掛載的物體”);
}
private void OnMouseExit()
{
print(“鼠標移出了掛載的物體”);
}
private void OnMouseOver()
{
print(“鼠標懸停在了掛載的物體上方”);
}
private void OnMouseUpAsButton()
{
print(“鼠標在掛載的物體身上松開了”);
}
??(C) Input系統(tǒng)接口類
???????0,相關
- 輸入相關的內(nèi)容一定是喲啊寫在Update里面
- 長按和點按的區(qū)別在于有沒有Dwon和Up
- 按任意鍵繼續(xù) – Input.AllKey()
- 得到輸入的是哪個鍵(Stirng)-Inpout.inputString()
- 得到鼠標的位置——Input.MousePosition()
+GetAxis 和 GetAxisRaw 的區(qū)別 ——后者返回的只有三個值 -1 0 1
???????1,連續(xù)檢測(按鍵,鼠標)
- print(“當前玩家輸入的水平方向的軸值是:”+Input.GetAxis(“Horizontal”));
- print(“當前玩家輸入的垂直方向的軸值是:” + Input.GetAxis(“Vertical”));
- print(“當前玩家輸入的水平方向的邊界軸值是:” + Input.GetAxisRaw(“Horizontal”));
- print(“當前玩家輸入的垂直方向的邊界軸值是:” + Input.GetAxisRaw(“Vertical”));
- print(“當前玩家鼠標水平移動增量是:”+Input.GetAxis(“Mouse X”));
- print(“當前玩家鼠標垂直移動增量是:” +Input.GetAxis(“Mouse Y”));
- 鼠標的某一個鍵按下 ——Input.GetMouseButtonDown( 0/1/2)
- 得到鼠標的位置——Input.GetMousePosition()——起點在屏幕左下角
- 鼠標的滾動——Input.MouseScrollDeltta()——改變Y軸的值
- 鼠標滾動的應用-------炮管的升降
???????2.連續(xù)檢測(事件)
手柄相關
-
得到所有按鈕的名字 ——Input.GetJoystickNameS()
-
if (Input.GetButton(“Fire1”))
{
print(“當前玩家正在使用武器1進行攻擊!”);
} -
if (Input.GetButton(“Fire2”))
{
print(“當前玩家正在使用武器2進行攻擊!”);
} -
if (Input.GetButton(“RecoverSkill”))
{
print(“當前玩家使用了恢復技能回血!”);
}
???????3.間隔檢測(事件)
-
if (Input.GetButtonDown(“Jump”))
{
print(“當前玩家按下跳躍鍵”);
} -
if (Input.GetButtonUp(“Squat”))
{
print(“當前玩家松開蹲下建”);
} -
if (Input.GetKeyDown(KeyCode.Q))
{
print(“當前玩家按下Q鍵”);
} -
if (Input.anyKeyDown)
{
print(“當前玩家按下了任意一個按鍵,游戲開始”);
} -
if (Input.GetMouseButton(0))
{
print(“當前玩家按住鼠標左鍵”);
} -
if (Input.GetMouseButtonDown(1))
{
print(“當前玩家按下鼠標右鍵”);
} -
if (Input.GetMouseButtonUp(2))
{
print(“當前玩家抬起鼠標中鍵(從按下狀態(tài)松開滾輪)”);
}
??(D)MathF類
???????1,MathF類的靜態(tài)變量
?Math和MathF的區(qū)別:mathf是unity封裝的類它在基于math數(shù)學類的基礎上添加了適合unity游相關的方法
?強制類型轉換和向下取整&向下取整:除去c#中常用的三個強轉 —ceilToInt() 和 FloorInt()
?鉗制函數(shù)MathF.clamp()
?Mathf.sigh()-判斷正負
?Mathf.MoveTowords()——無限接近但不完全相等
???????1,MathF類的靜態(tài)變量
- print(Mathf.Deg2Rad+“,度到弧度換算常量”);
- print(Mathf.Rad2Deg+ “,弧度到度換算常量”);
- print(Mathf.Infinity+“正無窮大的表示形式”);
- print(Mathf.NegativeInfinity + “負無窮大的表示形式”);
- print(Mathf.PI);
???????2,MathF類的靜態(tài)函數(shù)
-
print(Mathf.Abs(-1.2f)+ “,-1.2的絕對值”);
-
print(Mathf.Acos(1)+“,1(以弧度為單位)的反余弦”);
-
print(Mathf.Floor(2.74f)+“,小于或等于2.74的最大整數(shù)”);
-
print(Mathf.FloorToInt(2.74f)+“,小于或等于2.74的最大整數(shù)”);
-
print(Mathf.Lerp(1,2,0.5f)+“,a和b按參數(shù)t進行線性插值”);
-
print(Mathf.LerpUnclamped(1, 2, -0.5f) + “,a和b按參數(shù)t進行線性插值”);
???????3,MathF類中的 倒計時 函數(shù)
Math.MoveTowards()
void Update()
{
print("游戲倒計時:" + endTime);
endTime = Mathf.MoveTowards(endTime,0,0.1f); //每次減0.01 直到endTime為0
}
??(E)Time類
幀間隔時間
-
Time.deltaTime ",
完成上一幀所用的時間(以秒為單位 -
Time.unscaledDeltaTime
不受scale影響的幀間隔時間
物理幀間隔時間
-
Time.fixedDeltaTime
執(zhí)行物理或者其他固定幀率更新的時間間隔",fixedDeltatime是一個固定的時間增量。Unity中默認fixeddeltaTime為0.02秒,但FixedUpdate并不是真的就0.02秒調(diào)用一次
以下的總時間并不精確,適用于對時間精確不是特別嚴格的情況
-
Time.fixedTime + ",表示FixedUpdate(生命周期)已經(jīng)執(zhí)行的時間,可以作為自游戲啟動以來的總時間(以物理或者其他固定幀率更新的時間間隔累計計算的),基本上是以0.02慢慢累加(有誤差)
-
Time.time + ",游戲開始以來的總時間、
精確時間
-
Time.time + “,游戲開始以來的總時間”
-
Time.realtimeSinceStartup + “,游戲開始以來的實際時間”
-
Time.smoothDeltaTime + ",經(jīng)過平滑處理的Time.deltaTime的時間
-
Time.timeSinceLevelLoad + ",自加載上一個關卡以來的時間(進入了新場景后的時間)
時間縮放比例
- 時間停止
Time.timeScale = 0; - 恢復正常
Time.timeScale = 1; - 2倍速
Time.timeScale = 2;
一共跑了多少幀(多少次循壞)
Time.frameCount
???????慢動作功能 —時間成員變量
- ime.timeScale
時間流逝的標度,可以用來慢放動作、它的默認值為1,為0.5時可將當前游戲程序中所有時間放慢到原來的0.5倍,若為3 則為原來的三倍
Time.timeScale = 3;
??(F)Application類
- 在UnityEngine命名空間下
- 作用:對程序運行的數(shù)據(jù)進行操作控制
- ?? Application.LoadLevel() ——老式場景資源加載的方法
- ?? Application.Quit()——退出游戲(前提是游戲已經(jīng)打包后運行)
- ?? Application.Ispaly——是否是運行模式or編輯模式
??(G)cursor類
- 在UnityEngine命名空間下
- 鼠標的隱藏 ——Cursor.Visible();
-
鼠標的鎖定,限制范圍 CursorState = CursorLockMode.下面三個
-
設置鼠標圖片——Cursor.setCursor(三個參數(shù)如下)
??(H)Vector類
???????1.Vector2結構體的靜態(tài)變量
1.Vector2.up // 以下的形式pint之后是 (X,y)
2.Vector2.down
3.Vector2.Left
4.Vector2,Riht
5.Vector2.one //單位化之后的值
6.Vetor2.zero // 原點的值
???????2.Vector2 結構體的成員變量
1.x
2.y
3.XX.normalized //返回 單位化的值
4XX.magnitude //返回該向量的模長
5.XX.sqrMagnitude //返回該向量 模長的平方
‘’‘’‘’‘’‘’‘’
???????3.索引器的格式和存在的目的
1,格式
訪問修飾符 + 數(shù)據(jù)類型+ this [ 索引類型 index]
{
get
set
}
2.目的:
簡化結構體或者類成員的引用 (簡化代碼),可向數(shù)組用下標那樣調(diào)用成員
???????4.Vector2的公共函數(shù)-Equrls()
Equrls(); // 比較兩個向量是否相等
用法 : XX1 . Equals( XX2 );
???????5,Vector2的靜態(tài)方法
-
1.vector2.Angle(); 返回兩個向量的夾角
-
2.vevtor2.Distance(): 返回兩個點(向量)的距離
-
3.Vetor2.Lerp(a , b, t) ;返回兩個向量的差值 (二維向量線性差值)
-
4.Vecor.LerpUnclamped(a,b,t) ; 在 a 與 b 之間按 t 進行線性插值,t 沒有限制。
-
5.Vector2.MoveTowards(a , b,t): t為限制向量的移動步頻(可以理解為規(guī)定速度移動)、
-
6.vector2.max();
-
7.vector2.min();
-
8.vecotr2.smoothDamp(a,b,v ,t);平滑阻尼,可理解為汽車剎車效果,v為速度是二維向量,t為平滑時間
??(J)transform類
???????1.transform的位置信息
transform.position ----游戲物體trans組件的世界位置信息
transform.Rotation----游戲物體的四元旋轉信息
transform.enlerAugle- —游戲物體的歐拉角的信息(也就是Inspactor面板中的Rotation信息)
transform.localposition/localRotion/localenleAugle--------表自身的自身信息
- 當前游戲物體的世界四元旋轉值為——transform.rotation
- 當前游戲物體的自身大小為——transform.localScale
- 當前游戲物體的自身位置為——transform.localPosition
- 當前游戲物體的自身四元旋轉位置——transform.localRotation
- 當前游戲物體的世界歐拉角為——transform.eulerAngles
- 當前游戲物體的自身歐拉角為——transform.localEulerAngles
???????2.游戲物體的自身方向和世界軸方向
針對自身:
==transform.forword ==----向前Z軸方向
transform.up------向上y軸方向
transform.right----向右x軸方向
針對世界:
vector.XX…
針對看向:
transform.LookAt(某個方向)——一直看向某個方向
transform.LookAt(某個物體)——一直看向某個物體
針對縮放
#region 知識點一 縮放
//相對世界坐標系
print(this.transform.lossyScale);
//相對本地坐標系(父對象)
print(this.transform.localScale);
距離運動相關
- 當前的位置 + 我要動多長距離 == 得出最終所在的位置
this.transform.position = this.transform.position + this.transform.up * 1 * Time.deltaTime;
- 始終會朝向相對于自己的面朝向去動
this.transform.position += this.transform.forward * 1 * Time.deltaTime;
- 相對于世界坐標系的 Z軸 動 始終是朝 世界坐標系 的 Z軸正方向移動
this.transform.Translate(Vector3.forward * 1 * Time.deltaTime, Space.World);
- 相對于世界坐標的 自己的面朝向去動 始終朝自己的面朝向移動
this.transform.Translate(this.transform.forward * 1 * Time.deltaTime, Space.World);
- 相對于自己的坐標系 下的 Z軸正方向移動 始終朝自己的面朝向移動
this.transform.Translate(Vector3.forward * 1 * Time.deltaTime, Space.Self);
??????? 3.用transform組件來進行查找(包含索引查找)
-
被創(chuàng)造的游戲物體的世界坐標位置是——xx.transform.position
-
當前transform組件掛載的游戲物體對象的名字是——transform.name
-
當前transform組件掛載的游戲對象的子對象的數(shù)量——transform.childCount
-
查找當前游戲物體的子對象的trans組件名稱為——transform.Find(“zz”)
-
查找當前游戲物體的第一個子對象——transform.GetChild(0));
-
查找該游戲物體在父類中子對象的索引位置"——transform.GetSiblingIndex()
????系統(tǒng)路線學習點擊跳轉?
?【Unityc#專題篇】之c#進階篇】
?【Unityc#專題篇】之c#核心篇】
?【Unityc#專題篇】之c#基礎篇】
?【Unity-c#專題篇】之c#入門篇】
?【Unityc#專題篇】—進階章題單實踐練習
?【Unityc#專題篇】—基礎章題單實踐練習
?【Unityc#專題篇】—核心章題單實踐練習
你們的點贊?? 收藏? 留言?? 關注?是我持續(xù)創(chuàng)作,輸出優(yōu)質內(nèi)容的最大動力!、文章來源:http://www.zghlxwxcb.cn/news/detail-516427.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-516427.html
到了這里,關于【Unity每日一記】常見的類你都掌握了嗎,沒有就過來看看吧的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!