日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Unity基础知识学习笔记二

發(fā)布時(shí)間:2023/12/9 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Unity基础知识学习笔记二 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
1,object Instantiate(object original,Vector3 position,Quaternion rotation)? 克隆原始物體,并返回克隆物體。 例如:Instantiate(prefab,new Vector3(1,1,1),Qutaternion.identity);克隆一個(gè)prefab物體。 2,InputManager,輸入管理器,用于配置自定義按鍵。 3,Mathf結(jié)構(gòu)體:風(fēng)裝了常見數(shù)學(xué)計(jì)算方法的結(jié)構(gòu)體。 結(jié)構(gòu)體成員:
  • Mathf.PI (Only Read)讀取圓周率。
  • Mathf.Infinity 正無窮大。
  • Mathf.NegativeInfinity:負(fù)無窮小
  • Deg2Rad:度到弧度的轉(zhuǎn)換常量。例如float deg=30.0f;Debug.log(Mathf.Deg2Rad*deg);
  • Rad2Deg:弧度到度的轉(zhuǎn)換常量。
  • Mathf.Epslion:一個(gè)很小的浮點(diǎn)數(shù)值。
    function isEqual(a: float, b : float) {if(a >= b-Mathf.Epsilon && a <= b + Mathf.Epsilon)return true;elsereturn false; }
Mathf常用方法:
  • Mathf.SIn(float f);正弦值
  • Mathf.Cos(float f);余弦值
  • Mathf.Lerp(float from,float to,float t);返回from 和 to 之間的一個(gè)插值,基于浮點(diǎn)數(shù)t,t限制在 0~1之間。例如:void Update(){transform.position=new Vector3(Mathf.Lerp(10.0,20.0,0.5),0,0); }
  • Mathf.Abs(float a);返回絕對(duì)值。
  • Mathf.Clamp(float value,float min,float max);限制value的值在min 和max之間,如果value小于min,返回min,若大于max,返回max.
4,Vector3結(jié)構(gòu)體 封裝了向量運(yùn)算的相關(guān)變量和方法的結(jié)構(gòu)體。
  • normalized:
  • 只是三個(gè)數(shù)而已,可以代表 位置,方向,旋轉(zhuǎn)。
5,Time類的屬性: 1)Time.time:從游戲開始到現(xiàn)在所用時(shí)間,是以秒計(jì)算的。 2)Time.deltaTime:獲取上一次Update()方法執(zhí)行的事件到當(dāng)前執(zhí)行Update()方法時(shí)間的差值。 3)Time.fixedTime,每一幀固定消耗的時(shí)間。 4)Time.timeScale時(shí)間縮放。傳遞時(shí)間的縮放。這可以用于減慢運(yùn)動(dòng)效果。當(dāng)時(shí)間為1 時(shí),正常運(yùn)行,當(dāng)為0時(shí),處于暫停階段。 如果降低timeScale,建議也降低Time.fixedDeltaTime同樣的數(shù)值。 當(dāng)timeScale設(shè)置為0時(shí),FixedUpdate()函數(shù)將不會(huì)被調(diào)用。 5)Time.fixedDeltaTime固定增量時(shí)間。 function Update () { if (Input.GetButtonDown ("Fire1")) { ???? if (Time.timeScale == 1.0) ????????? Time.timeScale = 0.7; ???? else ????????? Time.timeScale = 1.0; ???? // Adjust fixed delta time according to timescale???? ???? // The fixed delta time will now be 0.02 frames per real-time second ???? //根據(jù)timescale調(diào)整固定增量時(shí)間。 Time.fixedDeltaTime = 0.02 * Time.timeScale; ???? } } 6)Time.frameCount幀數(shù) 已經(jīng)傳遞的幀的總數(shù)(只讀)。 7) 每一幀固定更新消耗的時(shí)間可以通過導(dǎo)航菜單Edit->Project Settings—>Time 菜單去設(shè)置。 方法:MonoBehaviour.FixedUpdate()固定時(shí)間更新 處理Rigidbody時(shí)候,應(yīng)該用FixedUpdate()代替Update().例如:當(dāng)給剛體加一個(gè)作用力時(shí)候,必須應(yīng)用作用力在FixedUpdate里面的固定幀。而不是Update里面的幀。 5,Transfrom類的: 位置,旋轉(zhuǎn),縮放,維持父子關(guān)系 localPostiont postion 本地坐標(biāo),世界坐標(biāo)
1,使用GUILayout 自動(dòng)布局類,默認(rèn)為縱向布局。 Label :創(chuàng)建一個(gè)自動(dòng)布局的標(biāo)簽。 Box :創(chuàng)建一個(gè)自動(dòng)布局的box . Toggle:創(chuàng)建一個(gè)開關(guān)按鈕。 HorizontalSlider:創(chuàng)建一個(gè)水平滑動(dòng)條,可以拖動(dòng)改變?cè)谧钚『妥畲笾抵g的值。 Toolbar:創(chuàng)建一個(gè)工具欄。 可以用橫向布局 代碼中必須用變量來使用,常量在服務(wù)器,或者配置文件中來配置。 2,GUI (用戶設(shè)置位置)實(shí)現(xiàn)自定義的布局類。 Button:TextArea: SelectionGrid:創(chuàng)建按鈕網(wǎng)格 BeginScrollView:滾動(dòng)條的開始部分。 EndScrollView:滾動(dòng)條的結(jié)束部分。 Window:創(chuàng)建一個(gè)彈出窗口。 3,Render 類,繼承于Component 對(duì)于任何游戲物體或組件,可以通過一個(gè)render屬性來訪問任何物體的渲染器,網(wǎng)格或粒子系統(tǒng),也可以通過它來訪問并修改材質(zhì)相關(guān)的屬性。 4,AudioSource:在Unity引擎中,音頻源(AudioSource)主要用途是在場(chǎng)景中播放2D或者3D的音頻剪輯(AudioClip)。 5,Unity中,Light組件可以用來模擬太陽,燃燒的火柴,手電筒,槍火光照亮場(chǎng)景中得對(duì)象,可以創(chuàng)造完美的視覺效果。 6,Render.material和Render.shareMaterial的區(qū)別: 改變Render.material的時(shí)候,只是改變?cè)撐矬w正在使用的渲染材質(zhì), 改變Render.shareMaterial的時(shí)候,所有正在使用該材質(zhì)的所有物體都一起變化。并且也修改儲(chǔ)存在工程里的材質(zhì)設(shè)置。不推薦使用shareMaterial進(jìn)行修改,推薦material。 音頻播放。 GUILayout 和GUi 區(qū)別:前者需要Rect,后者不需要 GUI坐標(biāo)左上為起點(diǎn)。 打地鼠游戲。 Mouse,MouseManager,GameManager.
1,安卓和Iphone 中得最上邊的 StatusBar狀態(tài)欄高度為 20px。? 2,Application類:所有與應(yīng)用程序相關(guān)的方法都封裝在Application類中。 屬性: platform 返回游戲運(yùn)行平臺(tái) runBlackground應(yīng)用程序是否在后臺(tái)運(yùn)行。 dataPath:游戲數(shù)據(jù)文件夾的路徑。 persisterDataPath:一個(gè)持久數(shù)據(jù)目錄的路徑。 temporaryCachePath:臨時(shí)數(shù)據(jù)/緩存目錄的路徑。 loadedLevel :加載的關(guān)卡索引 方法: LoadLevel:讀取新關(guān)卡后立即切換,其參數(shù)為所讀取新關(guān)卡的名稱或索引。 LoadLevelAdditive:加載一個(gè)新場(chǎng)景,當(dāng)前場(chǎng)景不會(huì)被銷毀。 OpenURL:Unity 支持在當(dāng)前設(shè)備中調(diào)用瀏覽器打開網(wǎng)頁。 Quit:退出應(yīng)用程序。在編輯器或者web播放器中退出被忽略。 異步加載: 第一種:異步加載新場(chǎng)景,當(dāng)新場(chǎng)景加載后進(jìn)入新場(chǎng)景并且銷毀之前的場(chǎng)景。 Application.LoadLevelAsync(“Game"); 第二種:同樣異步加載新場(chǎng)景,新場(chǎng)景加載后,保留之前場(chǎng)景的游戲?qū)ο蟛⑶疫M(jìn)入新場(chǎng)景。 Application.LoadLevelAddiveAsync(“Scene"); 組件,組件的通訊。
1,三種方式為當(dāng)前游戲?qū)ο筇砑咏M件:
  • gameObject.AddComponent<Light>?();
  • TrailRenderer?t?=?gameObject.AddComponent?("TrailRenderer")?as?TrailRenderer;
  • gameObject.AddComponent(typeof(Rigidbody))?;
注意:沒有RemoveComent方法,刪除組件用Object.Destroy()方法,直接刪除整個(gè)游戲?qū)ο蟆?2,獲取組件分方式為:
  • Transform?t1?=?GetComponent<Transform>?();
  • Transform?t2?=?GetComponent?("Transform")?as?Transform;
  • Transform?t3=?GetComponent(typeof(Transform))?as?Transform;
GetCompomentInChilren() 獲取子游戲?qū)ο蟮慕M件。 GetCompomentsInChilren(); GetCompoments(); GetCompoment(); 注意:如果用as轉(zhuǎn)換符修飾后必須要聲明變量用于接收。 3,腳本間的方法的訪問:
  • SenMessage(); ? ? ? ? ? ? ? ? ?調(diào)用當(dāng)前對(duì)象的方法
  • Broadcastmessage(); ? ? ? ?調(diào)用子對(duì)象的方法
  • SendMessageUpwards(); ?調(diào)用父對(duì)象的方法
注意:不推薦使用。,因?yàn)闀?huì)遍歷所有對(duì)象方法,所以會(huì)占用比較多的時(shí)間。只有當(dāng)不確定游戲?qū)ο蟮念愋偷臅r(shí)候,用這三個(gè)方法,驚醒調(diào)用方法。 4,動(dòng)畫Animation類
  • animatePysics:為真時(shí)動(dòng)畫在物理循環(huán)中執(zhí)行,與運(yùn)動(dòng)學(xué)剛體結(jié)合時(shí)有用
  • clip:默認(rèn)的動(dòng)畫片段
  • cullingType:消隱類型:AlwaysAnimate,BasedOnRenders,BasedOnClipBounds,BasedOnUsedOnUserBounds.
  • isPlaying:是否正在播放中。
  • localBounds:Animation 組件在本地空間的邊界。
  • playAutomatiacally:為真時(shí)自動(dòng)播放。
  • this[string]:返回片段的動(dòng)畫狀態(tài)。
  • wrapMode:動(dòng)畫循環(huán)模式。
5,Animation構(gòu)成結(jié)構(gòu):
  • ? ? ?Animation :一個(gè)或多個(gè)Animation Clip組成,可對(duì)Clip進(jìn)行控制。
  • ? ?? ?????Animation Clip:具體的某個(gè)動(dòng)作的動(dòng)畫信息。
  • ? ? ? ? ??? ? ?Animation Curve:動(dòng)畫曲線信息。
  • ? ? ? ? ? ? ? ?? ? ?Keyframe:構(gòu)成曲線的關(guān)鍵幀。
  • ? ? ? ? ? ? ? ?? ? ?time —value;
  • ? ? ? ? ??? ? ?Animation Event:動(dòng)畫播放到某一時(shí)刻觸發(fā)某個(gè)事件。
6,Animation常用方法:
  • ? ? ?播放控制:Play,Stop,CrossFade,Blend
  • ? ? ?Clip訪問:AddClip,GetClipCount,RemoveClip
7,AnimationClip類屬性:
  • ? ? ?length:動(dòng)畫的長(zhǎng)度,以妙計(jì)算(只讀)
  • ? ? ?frameRate:幀速率(只讀)
  • ? ? ?wrapMode:在動(dòng)畫狀態(tài)設(shè)置使用的默認(rèn)循環(huán)模式
  • ? ? ?localBounds:Animation組件在本地空間的邊界
8,AnimationClip類方法:
  • ? ? ?
  • ? ? ?SetCurve:給動(dòng)畫指定曲線一個(gè)特殊的屬性
  • ? ? ?ClearCurves:從剪輯清除所有曲線
  • ?????AddEvent:給剪輯添加動(dòng)畫事件
9,curve 由 keyframe 關(guān)節(jié)真組成。 9,粒子系統(tǒng):Particle System? 三種屬性:狀態(tài)屬性、粒子過程屬性、發(fā)射初始屬性 狀態(tài)屬性的六個(gè)狀態(tài):
  • ?????IsPaused,
  • ?????IsPlaying,
  • ?????IsStopped,
  • ?????loop:粒子是否是循環(huán)的。
  • ?????playOnAwake如果為true,將在開始的時(shí)候,自動(dòng)播放。
  • ?????time:粒子播放時(shí)間
粒子過程屬性:
  • ? ? ?duration :粒子系統(tǒng)的持續(xù)時(shí)間
  • ? ? ?emissionRate:發(fā)射速率
  • ? ? ?enableEmission:當(dāng)設(shè)置為false的時(shí)候,粒子系統(tǒng)不會(huì)發(fā)射粒子。
  • ? ? ?gravyityModifier:縮放被應(yīng)用到Physics.gravity所定義值的影響。
  • ? ? ?maxParticleCount:發(fā)射的最大粒子數(shù)量
  • ? ? ?particleCount:當(dāng)前粒子的數(shù)量(只讀屬性)
  • ? ? ?playbackSpeed:粒子系統(tǒng)播放速度,1為正常值。
  • ? ? ?randomSpeed:隨機(jī)種子被用于粒子系統(tǒng)發(fā)射,如果設(shè)為0,將會(huì)在Awake的時(shí)候被指定為一個(gè)隨機(jī)值。
  • ? ? ?safeCollisionEventSize:用于ParticleSystem.GetCollisionEvents事件的安全數(shù)組大小。
  • ? ? ?simulationSpace:粒子系統(tǒng)仿真的坐標(biāo)空間,世界坐標(biāo)空間或者本地坐標(biāo)空間。?
ParticleSystem初始屬性:
  • ? ? ?startColor:初始顏色。
  • ? ? ?startDelay:初始發(fā)射延遲。
  • ? ? ?startLifetime:生命周期總計(jì)(秒)
  • ? ? ?startRotation:初始旋轉(zhuǎn)
  • ? ? ?startSize:初始大小
  • ? ? ?startSpeed:初始速度
常用方法:
  • ? ?? int GetParticles(Particle[] particles);
  • ? ?? void SetParticles(Particle[] particles,int size);
  • ? ? ?Clear :清除粒子系統(tǒng)所有粒子
  • ? ? ?GetCollisionEvents:獲取粒子碰撞事件,返回寫入數(shù)組里的事件數(shù)。
  • ? ? ?Emit:立即發(fā)射指定的粒子
  • ? ? ?GetParticles:獲取當(dāng)前粒子系統(tǒng)內(nèi)的粒子,返回被寫入Input particle數(shù)組中得粒子數(shù)量。
  • ? ? ?IsAlive:判斷系統(tǒng)中是否還有粒子。
  • ? ? ?Pause:暫停粒子系統(tǒng)的播放。
  • ? ? ?Play:播放粒子系統(tǒng)
  • ? ? ?SetParticles:設(shè)置當(dāng)前粒子系統(tǒng)的粒子,大小為被設(shè)置的粒子數(shù)量。
  • ? ? ?Simulate:在給定的時(shí)間周期內(nèi)快進(jìn)仿真粒子系統(tǒng),然后暫停它
  • ? ? ?Stop:停止播放粒子系統(tǒng)。
OnParticleCollison事件:在某個(gè)粒子碰到一個(gè)碰撞體的時(shí)候被觸發(fā)。可以被用于控制物體在被粒子之中后被銷毀。
12-19? 鼠標(biāo)事件
  • ? ? ?OnMouseDown
  • ? ? ?OnMouseDrag:鼠標(biāo)按下,并且保持按下狀態(tài)觸發(fā),
  • ? ? ?OnMouseEnter:鼠標(biāo)進(jìn)入Collider區(qū)域的時(shí)候或者進(jìn)入GUIElement的時(shí)候,被觸發(fā)
  • ? ? ?OnMouseExit:
  • ? ? ?OnMouseOver:處于Collider之上的時(shí)候,每幀都調(diào)用
  • ? ? ?OnMouseUp
  • ? ? ?OnMouseUpAsButton:當(dāng)鼠標(biāo)在同一個(gè)GUIElement或者Collider上按下又彈起得情況下會(huì)觸發(fā)。
觸發(fā)事件:
  • OnTriggerEnter?
  • OnTriggerStay
  • OnTriggerExit
碰撞事件
  • ?????OnCollisionEnter
  • ?????OnCollisonStay
  • ?????OnCollisonExit
12-21 ? 程序服務(wù)器,證書服務(wù)器。 先創(chuàng)建Identityfile,才能發(fā)布 Swing Copters 游戲 1,游戲?qū)ο笙N方法的區(qū)別:
  • gameObject.renderer.enabled???
  • //是控制一個(gè)物體是否在屏幕上渲染或顯示??而物體實(shí)際還是存在的?只是想當(dāng)于隱身?而物體本身的碰撞體還依然存在的
  • GameObject.Destroy()????
  • //表示移除物體或物體上的組件?代表銷毀該物體??實(shí)際上該物體的內(nèi)存并沒有立即釋放?而是在你下下個(gè)場(chǎng)景中槽釋放內(nèi)存資源,就是你a場(chǎng)景中Destroy了?一般是在c場(chǎng)景中才真正釋放該物體的內(nèi)存資源(這是我的體會(huì)?不知道理解錯(cuò)誤沒)??
  • ??
  • gameObject.active?????
  • //是否在場(chǎng)景中停用該物體???在你gameObject.active?=false中?則你在場(chǎng)景中用find找不到該物體????
  • //如果該物體有子物體?你要用SetActiveRecursively(false)?來控制是否在場(chǎng)景中停用該物體(遞歸的) ?

  • 12-22? 第九講:物理射線 1,Ray 類:
    • 變量:origin :射線的起點(diǎn)、direction:射線的方向
    • 構(gòu)造器 :Ray(vector3 position ,vector3 direction) ;?public Ray ray = new Ray(transform.position, transform.forward);
    • 方法:Ray.GetPoint(float distance); 返回沿著射線在distance 距離單位的點(diǎn);
    • Mathf.Infinity 屬性:表示正無窮大。
    2,光線投影
    • Ray ray=Camera.main.ScreenPointToRay(Input.mousePosition);
    • RaycastHit hit;
    • If(Physics.Raycast(ray,out hit,100))
    • Debug.DrawLine(ray.orgin,hit.point);
    • hit :如果此方法返回True,hit將包含碰撞器的更多信息。
    • 此方法用于檢測(cè)一范圍內(nèi)都包含哪些碰撞器。得到這些游戲物體的信息,用于后面的操作。
    3,Physics類 屬性:
    • Physics.gravity:場(chǎng)景中用于所有剛性物體的重力。Physics.gravity=Vector3(0,-1.0f,0);
    • Physics.minPenetrationForPenalty:最小滲透深度。當(dāng)兩個(gè)物體發(fā)生接觸碰撞時(shí),物體間的最小穿透深度值,默認(rèn)為0.05,取值范圍從0到正無窮,必須為正值。Physics.minPenetrationForPenalty=0.1f;
    • Physics.bounceThreshold:反彈劾值。當(dāng)兩個(gè)物體發(fā)生碰撞的時(shí)候,相對(duì)速度小于這個(gè)值得時(shí)候,不發(fā)生反彈。默認(rèn)2
    • Physics.sleepVelocity:靜止速度。如果物體的線性物體在這個(gè)速度之下的時(shí)候,物體將進(jìn)入靜止?fàn)顟B(tài)。默認(rèn)0.15.
    • Physics.sleepAngularVelocity:如果物體的角速度在這個(gè)值之下的時(shí)候處于靜止?fàn)顟B(tài)。默認(rèn)0.14.
    • Physics.maxAngularVelocity:設(shè)置高速旋轉(zhuǎn)物體的旋轉(zhuǎn)速度的最大值。默認(rèn)7.
    • Physics.solverIterationCount:迭代次數(shù)。如果關(guān)節(jié)剛體有搖擺或行為雜亂,設(shè)置較高的值使其穩(wěn)定。默認(rèn)7.
    方法:
    • Raycast:在場(chǎng)景中投下與所有碰撞體碰撞的一條射線。用于獲取一個(gè)碰撞體。
    • RaycastAll:用于獲取一系列,所有的碰撞體。
    • Linecast:獲取一條線上的碰撞體。
    • OverlapShere:獲取球形內(nèi)的碰撞體,返回collider[];
    • CapsuleCast:膠囊體投射。
    • CheckShere:如果定義的球體和物體發(fā)生碰撞,返回真,球體定義在世界坐標(biāo)系上。
    • InoreCollision:使碰撞體1和碰撞體2無效。
    • IgnoreLayerCollision:忽略層1和層2的所有碰撞。
    • GetIgnoreLayerCollision:是否層1和層2之間的碰撞檢測(cè)被忽略。
    layerMask ,只選定LayerMask層內(nèi)的碰撞器,其他層內(nèi)的碰撞器忽略。

    轉(zhuǎn)載于:https://www.cnblogs.com/lvyongbo/p/4185366.html

    總結(jié)

    以上是生活随笔為你收集整理的Unity基础知识学习笔记二的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。