影音先锋男人资源站_国产婷婷综合丁香亚洲欧洲_白狐视频传媒污软件下载_趁女同学午休揉她的屁股

Unity常用API,unity中文api參考手冊-ESG跨境

Unity常用API,unity中文api參考手冊

來源網絡
來源網絡
2022-05-08
點贊icon 1
查看icon 3037

Unity常用API,unity中文api參考手冊Unity常用API1、Event Function:事件函數Reset():被附加腳本時、在游戲物體的組件上按Reset時會觸發該事件函數Start():在游戲初始化時會執行一次Update():每一幀都會運行這個方法FixedUpdate():會在指定幀調用該方法多......

Unity常用API,unity中文api參考手冊




Unity常用API

1、Event Function:事件函數

Reset():被附加腳本時、在游戲物體的組件上按Reset時會觸發該事件函數

Start():在游戲初始化時會執行一次

Update():每一幀都會運行這個方法

FixedUpdate():會在指定幀調用該方法多少次

LateUpdate():晚于Update的運行順序,但是FPS和Update是一樣的

Awake()Start():都是在游戲物體初始化運行一次,但是Awake的運行順序高于Start的,并且只要腳本中存在Awake方法,則無論是否掛載了該腳本都會執行該方法

OnEnable():當將物體的SetActive設置為true時就會自動調用調用該方法

OnDestory():當關閉游戲則會調用該方法

2、Time時間類函數:

Time.time表示從游戲開發到現在的時間,會隨著游戲的暫停而停止計算。

Time.timeSinceLevelLoad表示從當前Scene開始到目前為止的時間,也會隨著暫停操作而停止。

Time.deltaTime表示從上一幀到當前幀時間,以秒為單位。【一般用來控制角色、動畫的運動】

Time.fixedTime表示以秒計游戲開始的時間,固定時間以定期間隔更新(相當于fixedDeltaTime)直到達到time屬性。

Time.fixedDeltaTime表示以秒計間隔,在物理和其他固定幀率進行更新,在Editgt;ProjectSettingsgt;Time的Fixed Timestep可以自行設置。

Time.SmoothDeltaTime表示一個平穩的deltaTime,根據前N幀的時間加權平均的值。

Time.timeScale時間縮放,默認值為1,若設置lt;1,表示時間減慢,若設置gt;1,表示時間加快,可以用來加速和減速游戲,回放等、非常有用。如果游戲中控制運動的都是使用了Time.deltatime的話,則可以通過設置Time.timeScale=0來暫停其運動等。

Time.frameCount總幀數

Time.realtimeSinceStartup表示自游戲開始后的總時間,即使暫停也會不斷的增加。【一般用作性能測試】

Time.captureFramerate表示設置每秒的幀率,然后不考慮真實時間。

Time.unscaledDeltaTime以秒計算,完成最后一幀的時間不考慮timescale時候與deltaTime相同,若timescale被設置,則無效。

Time.unscaledTime從游戲開始到現在所用的時間不考慮timescale時候與time相同,若timescale被設置,則無效。

3、GameObject類:

【1】、創建游戲物體的三種方法:

通過其構造器來創建GameObject go=new GameObejct(游戲物體名);//一般是用來創建空的游戲來存放其他東西的。

Instantiate GameObject.Instantiate(prefab)//根據Prefab或者是另外一個游戲物體來創建(克隆Colon),可以實例粒子、等其他的游戲物體,很是常用的

CreattePrimitive GameObject.CreatePrimitive(PrimitiveType.**)//創建原始的游戲物體,基本的幾何體

【2】、為游戲物體添加組件,其中組件可以是我們自己自定義的腳本GameObject.AddComponentlt;組件名gt;

【3】、屬性、變量:

GameObject.activeInHierarchy游戲物體是否處于激活狀態,與父類有關,父類被取消激活,則子類也是取消激活的

GameObject.activeSelf自身的激活狀態,與父類無關,只與自身有關。【控制組件的激活與取消激活則使用.enable=false/true】

GameObject.tag游戲物體的tag標簽,具體的由程序員自定義設置

GameObject.SetActive(false/true)通過參數的控制來設置其游戲物體的激活狀態,true為激活狀態,反之為取消激活狀態。

【4】、UnityEngine.Object中的共有方法與變量

name:名字,調用該變量,則無論是通過GameObject還是Component都是返回游戲物體的名字

Destroy():刪除游戲物體,但是不會立馬在unity中刪除,而是會先進行回收,等確定沒對象使用的時候,在進行刪除

DontDestroyOnLoad():當加載新的場景的時候,不刪除這個場景中的某個游戲物體

FindObjectTypelt;gt;

FindObjectsTypelt;gt;:t通過類型來進行查找,是進行全局的查找,則就是在整個場景中進行查找

FindGameObjectWithTag:如果查到的是多個,則只返回查找到的第一個

FindGameObejctsWithTag返回查找到的游戲物體集合

【5】、消息的發快遞

BroadcastMessage()廣播發快遞消息,則該物體上對應的方法會被調用,同時這個游戲物體上的子物體上對應的方法也會被調用的

SendMessage()發快遞消息,只會對這個游戲物體中腳本上的方法發快遞消息

SendMessageUpwards()廣播發快遞消息,但是和BroadcastMessage()是相反的,在調用自身的方法時也會向上傳遞,調用其父類的方法

【6】、游戲組件的查找

Cube cube=target.GetComponentlt;Cubegt;();返回一個對應的組件,如果有多個,則只返回第一個

Cube[]cc=target.GetComponentslt;Cubegt;();返回該游戲物體上所有符合條件的組件,返回一個組件數組

Cube[]xx=target.GetComponentsInChildrenlt;Cubegt;();返回該游戲物體上的對應組件,同時返回該游戲物體的子類上對應的組件

Cube[]yy=target.GetComponentsInParentlt;Cubegt;();返回該游戲物體上的對應組件,同時返回該游戲物體的父類上對應的組件

4、MonoBehaviours的類:

【1】、繼承的變量成員

enabled:返回該組件是否被激活或者是被禁用,可以通過該變量來進行設置

isActiveAndEnabled:只能返回該組件是否激活的標志位,不能設置該變量,為只讀的

tag:該組件所對應的游戲物體的標簽

name:該組件所對應的游戲物體的名字

【2】、Invoke等方法、變量:將添加要調用的方法添加到等待隊列中,然后等待用戶設定的時間后,進行隊列中的方法調用。

Invoke(方法1,float time):在等待time的時間后調用方法1

bool i=IsInvoking(方法1)返回bool值,如果方法被添加到隊列中,但沒有被運行則返回true,如果經過一段時間后該方法被調用了則會返回false;

InvokeRepeating(方法1,time,number):等待time時間后,會重復開始運行方法1,每秒鐘運行number次。

CancelInvoke()會暫停通過Involve/InvokeRepeating的運行,但是一般來說CancelInvoke會和InvokeRepeating組合調用。參數由自己設定

擴充:在腳本的類前添加[ExecuteInEditMode]:則該腳本不用按游戲運行按鈕就會開始編譯,只限在編輯模式里面

在腳本的共有變量前添加[HideInInspector]:則該共有變量不會在Inspector面板進行顯示

5、Coroutines:協程:

1、定義協程:IEnumerator方法名()

{

yield return 0/null;

yield return new WaitForSeconds(1.0f);//等待一定時間在運行下面的代碼

}

2、開啟協程:StartCoroutines(方法名());

說明:協程開啟會繼續執行下面代碼,不會等協程方法運行完再執行接下來的方法

3、開啟與關閉協程時,StartCoriutine(參數)、StopCoroutine(參數)其中的參數要互相對應,如果傳遞的是方法名,則兩個方法中的參數就要是方法名,如果是IEnumerator的返回值,則其中兩個方法發的參數就要是IEnumerator的返回值

1、private IEnumerator coroutine;

coroutine=WaitAndPrint();

StartCoroutine(coroutine);

StopCoroutine(coroutine);

2、StartCoroutine(WaitAndPrint);

StopCoroutine(WaitAndPrint);

4、StopAllCoroutines()停止所有的協程,不管你是怎么調用的

6、OnMousexx鼠標觸發事件:如果是通過Collider進行觸發檢測的話,則要在設置中打開允許進行射線檢測。

OnMouseDown():當鼠標按下的時候觸發,按一次觸發一次

OnMouseDrag():當鼠標按住不放的時候一直觸發,是每一幀進行觸發

OnMouseUp():當鼠標抬起的時候觸發,只執行一次

OnMouseEnter():當鼠標進入的時候觸發,進入一次觸發一次

OnMousetOver():當鼠標在觸發物體的上面時,則一直觸發

OnMouseExit():當鼠標移出的時候觸發

OnMouseUpAsButton()相當于是按鈕的功能,當鼠標在同一個游戲物體上按下抬起的時候才會觸發,按下與抬起不在同一個游戲上的話則不會進行觸發。

7、Mathf類:所有的成員均為靜態的

Mathf.Abs()返回絕對值的

Mathf.Ceil()向上取整的,10.1gt;11

Mathf.Clamp(value,min,max)如果value的值在minmax之間的話就返回value,但是如果value的值小于min,則返回min,如果value的值大于max,則返回max,一般是用在控制角色血量,當玩家的血量減少的時候,不會出現出現低于0和大于100的情況hp=Mathf.Clamp(hp,0,100);

Mathf.ClosePowerOfTwo(value):取得離value的2次方最近的值

Mathg.DeltaAngke:取得兩個角度之間的最小夾角

Mathf.Floor向下取整

Mathf.Pow(i,j)取得i的j次方

Mathf.MoveToWards()一般用來做移動控制,是勻速的運動,加速度固定的

Mathf.Lerp()差值運算,一般是用來控制動畫、運動,越往后運行的越慢的。

Mathf.PingPong(t,maxValue)類似乒乓球的來回運動,起始值是0,通過t變量來控制值由0向maxValue移動,當t大于maxValue的時候又向0進行移動,然后就這樣的來回往復運動,一般t變量用時間Time.deltatime來進行控制的。

8、Input輸入類:

GetKey()按鍵一直按著時觸發

GetKeyDown按鍵被按下那一刻進行觸發

GetKeyUp按鍵被按下后抬起時觸發

GetMouseButton(0/1/2)1:左鍵2:右鍵3:中鍵鼠標一直按著時觸發

GetMouseButtonDown()鼠標按下那一刻觸發、

GetMouseButtonUp()鼠標抬起的那一刻時觸發

GetButtonDown()

GetButton()

GetButtonUp()這三個的參數是用戶自定義的虛擬按鍵進行觸發,其他的和上面的一樣

GetAxis(虛擬軸名)通過按下的虛擬軸來返回~1之間的值,開始值是0,然后向/1進行漸漸的變化,有一定的加速度。一般用來控制運動的,比如是賽車的加速運動等

GetAxisRaw()其他的和GetAxis差不多,就是少了漸變效果,返回值只有0 1三個

anyKeyDown當任何按鍵被按下(包括鼠標按鍵)時返回true

anyKey當任何按鍵被按著(包括鼠標)時返回true

mousePosition返回鼠標在屏幕上的像素坐標,【屏幕坐標】z軸衡為0的

9、Vector2;二維向量

magnitude:返回向量的長度

normalized;返回這個向量長度為1的矢量,不管這個向量多長,也是返回1的矢量,只是返回值,不對原向量的值產生影響

Normalize()無參數的,也是向量化,但是調用該方法會改變原向量值,使其的值被向量化了

ClampMagnitude();將一個向量限制在參數中指定的長度之間

MoveToWards()用來做勻速的運動,由一個位置向另一個位置進行移動

sqrMagnitude對求向量的的長度時不進行開平方根運算了,減少性能的損耗,一般是用來比較兩個向量的長度大小的。

其他的參考API文檔即可,較為簡單。

擴充:向量是結構體,為值類型,修改其中的變量的時候要整體進行修改,不能單獨的進行單個變量的賦值修改

10、Vector3:三維變量

Cross()插乘運算【左手法則】,通過兩個向量來獲得另一個向量的方向,然后進行相關的判斷

Project()投影運算

Reflect()反射運算

Slerp()按照角度進行插值,與lerp的按照位置信息進行插值的,一般用在炮臺的旋轉,使旋轉的更加平滑

11、Random隨機數類:

InitState():通過參數指定的種子,然后再調用Range()產生隨機數的時候會依據種子來進行生成,則每一次運行所生成的隨機數都是一樣的,是偽隨機數。一般要生成的隨機數不同,可以設置參數為System.DataTime.Now.Ticks:通過時間戳來完成

insideUnitFCircle:在單位為1的園內隨機生成一個位置信息,如果要在更大的圓中生成,則可以在后面*圓的半徑信息。一般用來控制隨機生成敵人的位置信息

insideUnitSphere:在單位為1的球內隨機生成一個位置信息,如果要在更大的球中生成,則可以在后面*圓的半徑信息。

12、四元數Quaternion:

歐拉角【eylarAngles】與面板中的值對應和四元數【rotation】之間是可以進行轉換的,一般歐拉角是用來讓用戶可以直觀的看到的,而四元數是用來控制內部的運算的。

.eulerAngles將四元數轉變為歐拉角

Euler()將歐拉角轉變為四元數

.LookRotation()讓玩家通過設置四元數來進行望向敵人的旋轉,將向量方向轉變為四元數

Vector3 temp=enemy.positionplayer.position;//獲得兩個位置信息之間的變量,是主角望向敵人,所以要設置向量的方向是指向敵人的

enemp.y=0;//如果不想主角在望向他的時候出現低頭的情況,也就是y軸的值出現了變化了。

player.rotation=Quaternion.LookRotation(temp);

slerp()在做朝向的旋轉的時候,不建議使用lerp,而是建議使用slerp,使其的旋轉朝向更為平滑,更加的自然

Quaternion target=Quaternion.LookRotation(temp);

player.rotation=Quaternion.Slerp(player.rotation,target,Time.deltaTime);//插值的緩慢旋轉

13、Rigidbody:剛體組件,控制角色的移動

.position:可以通過剛體來控制運動,在控制運動方面,使用rigibody.positon比transform.porition計算要快的多,相關的物理計算也是在剛體中計算好了,但是不建議使用這個方法來持續的控制物體的運動,不平滑,控制一兩次的時候還可以使用

MovePosition()對position的優化,其中利用了插值運算,一般持續運動的則使用這個方法,不出現卡頓的現象

,rotation:

MoveRotation用來控制剛體的旋轉的,一般不建議使用rotation,比較耗性能,建議使用MoveRotation(),然后配合Quaternion,slerp()進行使用,使其更加的平滑

AddForce()為剛體添加力,一般可以用在賽車游戲中,當進行短時的加速則可以給以限定時間的AddForce方法

14、Camera;相機組件:

當相機的標簽是main cream時,可以通過Camer.main來進行主相機cream組件的查找射線,用來檢測鼠標在屏幕上的位置信息,以及觸碰到什么

Ray ray=cameraMain.ScreenPointToRay(Input.mousePosition);//獲得相機到鼠標之間的射線

RaycastHit hit;//用來存放射線檢測到的游戲物體的信息的

bool temp=Physics.Raycast(ray,out hit);//進行射線檢測

15、Application

SreeamingAcsets:該文件下的資源不會被壓縮,導入是什么類型還是什么類型,【主要是音頻、視頻資源】

dataPath:工程文件路徑

streamingAssetsPath:可以通過文件流來進行讀取的文件路徑

persistenDataPath:可以實例的文件路徑

tempporaryCachePath:臨時的文件路徑

Application.OpenURL()打開指定的網址

Application.Quit()退出游戲的運行

.CapturScreenshot(游戲截圖)用來截圖的,字符串為截圖fileName

Application.identifier標識名

.companyName公司名

productName產品名

instalMode安裝包名

isEditor是否在編輯器模式

isFocused是否在焦點

isMoliePlatform是否是移動平臺

isPlaying

isWebPlayer

platform編輯器的平臺

unityVersion unity版本號

version項目文件版本號

runInBackground是否可以在后臺運行

UnityEditor.EditorApplication.isPlaying=false;//在編輯器模式下推出編輯狀態

16、SceneManager場景類

SceneManager.LoadScene()加載下一個場景,一般是用在另一個場景不是太大的情況下

SceneManager.LoadSceneAsync()異步加載下一個場景,返回AsyncOperation類型,里面包含了加載的信息,加載的進度條等等。可以讓用戶緩解等待加載場景的時間

sceneCount獲得當前加載的場景個數

sceneCountInBuildSettings在Build面板中加載的場景個數

GetActiveScene()獲取已經加載的當前場景的信息

GetSceneAt(index)加載index索引的場景

當加載新的場景的時候會觸發下面的事件:

activeSceneChanged當有新場景被加載的時候就會調用這個事件

sceneLoaded當有新場景加載完成的時候就會觸發這個事件

擴充:事件的注冊時通過加方法來進行注冊的:

SceneManger.activeSceneChanged+=OnAcitiveScenenChanged;

17、射線檢測:一般射線檢測要在射線檢測的范圍內,并且被檢測物體要有Collider

Ray ray=new Ray(起點,方向);

PaycastHit hit;//hit中存放的是射線檢測的碰撞信息

bool temp=Physics.Raycast(ray,out hit);//具體的重載方法邊用邊查

Ray ray=new Ray(this.transform.position+transform.forward,transform.forward);//創建射線

RaycastHit hit;//存儲射線檢測到的游戲物體信息

if(Physics.Raycast(ray,out hit))//通過返回值來判斷射線是否檢測到相關的物體了

{

Debug.Log(hit.collider.gameObject.name);

}

擴充:

Raycast;檢測的是射線碰撞到的第一個物體,不具有穿透性

RaycastAll:返回的是RaycastHit數組,具有穿透性,可以返回檢測到的多個游戲物體

18、代碼監聽觸發事件:

lt;Buttongt;().onClick.AddListener(方法名);//當觸發button組件,則會觸發指定的方法名的方法

通過實現接口來注冊監聽事件:using UnityEgine.EventSystems;導入命名空間

IPointerDownHandler鼠標按下的事件,具體的接口參考手冊

Raycast Target:如果取消勾選則不做事件監聽了,則無法實現檢測了

19、www類,下載是用來在網絡中下載資源的,

public string url=http://img.taopic.com/uploads/allimg/120727/20199520HG1030762.jpg;

IEnumerator Start()

{

WWW www=new WWW(url);

yield return www;

Renderer renderer=this.GetComponentlt;Renderergt;();

renderer.material.mainTexture=www.texture;

}

20、Touches觸摸事件:

Input.touches:返回放在屏幕上的手指信息,返回數組

Touch touch1=Input.touches[0];

touch1.position;

TouchPhase pahse=touch1.phase phase是用來返回手指的狀態的

21、Debug.DrawRay(ray.oridin,ray.direction)繪制射線,第一個參數是原點,第二個是方向

22、CharacterController角色控制器

.SimpleMove(【vector3】)簡單移動

.isGrounded判斷是否到地面上,bool值

.Move()與simpleMove的區別是要*Time.deltatime、而且simpleMove會使用自帶的重力

OnCOntrollerColliderHit(ControllerCollidrHit hit)當有碰撞到其他的碰撞器的時候會觸發這個事件函數【hit保存碰撞到的物體信息】

23、Mesh的設置:

material mesh指定人是什么樣子的,material指定人的膚色是什么樣子的

24、API變更:

棄用:Application.LoadLevel();

新的:SceneManager.LoadScene();加載新的場景

棄用

新的:Scene scene=SceneManager.GetActiveScene();//獲得當前活動場景的信息

SceneManger.LoadScene(scene.buildIndex)//重新加載當前場景

OnLevelWasLoaded()當場景被加載的時候調用,被棄用了

改成事件了:sceenLoaded


文章推薦
必須收藏最詳細的Pinterest 營銷技巧整理,watchboard for pinterest
阿里云RDS數據庫常用SQL語句分享,阿里云rds數據庫
必應搜索推廣中的特色產品,必應搜索引擎如何推廣網站
Wish選品工具用什么好,wish選品技巧


特別聲明:以上文章內容僅代表作者本人觀點,不代表ESG跨境電商觀點或立場。如有關于作品內容、版權或其它問題請于作品發表后的30日內與ESG跨境電商聯系。

搜索 放大鏡
韓國平臺交流群
加入
韓國平臺交流群
掃碼進群
歐洲多平臺交流群
加入
歐洲多平臺交流群
掃碼進群
美國賣家交流群
加入
美國賣家交流群
掃碼進群
ESG跨境專屬福利分享群
加入
ESG跨境專屬福利分享群
掃碼進群
拉美電商交流群
加入
拉美電商交流群
掃碼進群
亞馬遜跨境增長交流群
加入
亞馬遜跨境增長交流群
掃碼進群
亞馬遜跨境增長交流群
加入
亞馬遜跨境增長交流群
掃碼進群
拉美電商交流群
加入
拉美電商交流群
掃碼進群
ESG獨家招商-PHH GROUP賣家交流群
加入
ESG獨家招商-PHH GROUP賣家交流群
掃碼進群
2025跨境電商營銷日歷
《2024年全球消費趨勢白皮書——美國篇》
《2024TikTok出海達人營銷白皮書》
《Coupang自注冊指南》
《eMAG知識百科》
《TikTok官方運營干貨合集》
《韓國節日營銷指南》
《開店大全-全球合集》
《TikTok綜合運營手冊》
《TikTok短視頻運營手冊》
通過ESG入駐平臺,您將解鎖
綠色通道,更高的入駐成功率
專業1v1客戶經理服務
運營實操指導
運營提效資源福利
平臺官方專屬優惠

立即登記,定期獲得更多資訊

訂閱
聯系顧問

平臺顧問

平臺顧問 平臺顧問

微信掃一掃
馬上聯系在線顧問

icon icon

小程序

微信小程序

ESG跨境小程序
手機入駐更便捷

icon icon

返回頂部