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

歡迎訪問(wèn) 生活随笔!

生活随笔

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

编程问答

Unity3D脚本中文系列教程(五)

發(fā)布時(shí)間:2025/1/21 编程问答 56 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Unity3D脚本中文系列教程(五) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

http://dong2008hong.blog.163.com/blog/static/4696882720140302848544/?suggestedreading&wumii

Unity3D腳本中文系列教程(四)Array 類(lèi) 數(shù)組允許你將多個(gè)對(duì)象存儲(chǔ)在一個(gè)變量中。 Array類(lèi)只能用于JavaScript 。更多關(guān)于C#或JavaScript中ArrayLists ,字典或哈希表的信息參考MSDN 。 這是一個(gè)基本的例子,說(shuō)明可以使用一個(gè)數(shù)組類(lèi)做什么function Start( ){var arr = new Array ( ) ; arr.Push ("Hello"); //添加一個(gè)元素 Print(arr[ 0]); //打印第一個(gè)元素 arr length = 2 ; //調(diào)整數(shù)組大小arr [ 1] = "World"; //將“World”賦給第二個(gè)元素 for (var value : String in arr) //遍歷這個(gè)數(shù)組 {Print ( value );}} Unity中有兩種類(lèi)型的數(shù)組,內(nèi)置數(shù)組和普通的JavaScript數(shù)組。 內(nèi)置的數(shù)組(原始的.NET數(shù)組),是非常快速和有效的但是它們不能被調(diào)整大小。 它們是靜態(tài)類(lèi)型的,這允許它們?cè)跈z視面板中被編輯。這是如何使用內(nèi)置數(shù)組的簡(jiǎn)單例子。 //在檢視面板中公開(kāi)一個(gè)浮點(diǎn)數(shù)組,你可以在那里編輯它 var value : float[ ]; function Start ( ) {//遍歷數(shù)組for ( var value in values){print ( value );}//因?yàn)槲覀儾荒苷{(diào)整內(nèi)置數(shù)組的大小//我們必須重新創(chuàng)建一個(gè)數(shù)組來(lái)調(diào)整它的大小value = new float[ 10 ];value[ 1 ] = 5.0;//給第二個(gè)元素賦值 } 內(nèi)置數(shù)組在性能相關(guān)的代碼中非常有用的(使用Unity的JavaScript和內(nèi)置數(shù)組可以非常容易使用mesh interface在一秒內(nèi)處理兩萬(wàn)個(gè)頂點(diǎn)。) 另一方面,普通的JavaScript數(shù)組可以調(diào)整大小,排序并可以做所有你期望的數(shù)組類(lèi)的操作。JavaScript數(shù)組不顯示在檢視面板中。你可以容易地在JavaScript數(shù)組和內(nèi)置數(shù)組之間轉(zhuǎn)換。 function Start ( ) {var array = new Array ( Vector3(0,0,0),Vector3(0,0,1));array .Push (Vector3 (0,0,2));array .Push (Vector3 (0,0,3));//拷貝js數(shù)組到內(nèi)置數(shù)組var builtinArray : Vector3[ ] = array . ToBuiltin ( Vector3 );//將內(nèi)置數(shù)組賦給js數(shù)組var newarr = new Array ( builtinArray );//newarr與array 包含相同的元素 print ( newarr ); } 注意按照Unity的命名規(guī)則下面所有函數(shù)均大寫(xiě)開(kāi)頭。為方便JavaScript用戶(hù) , Unity數(shù)組類(lèi)也接受小寫(xiě)函數(shù)。變量◆ var length : int描述:數(shù)組的長(zhǎng)度屬性,返回或設(shè)置數(shù)組中元素的數(shù)量。 function Start ( ) {var arr = Array ( "Hello" , "World" ) ;print (arr . length ) ; //打印兩個(gè)arr . Length = 5 ; //調(diào)整數(shù)組的大小為5 } 函數(shù)◆ function Add ( value : object ) : void描述:添加 value 到數(shù)組末端。var arr = new Array ("Hello"); arr.Add (" World "); Print ( arr ); //打印"Hello ","World" ◆ function Clear ( ) : void描述: 清空數(shù)組。 數(shù)組的長(zhǎng)度將為零。 var hello = new Array ("Hello ","World "); hello.Clear ( ) ; //現(xiàn)在hello包含零個(gè)元素 ◆ function Concat ( array :Array , optionalArray0: Array, optionalArray1 : Array):Array描述:連接兩個(gè)或多個(gè)數(shù)組。這個(gè)方法不會(huì)改變已有的數(shù)字并返回連接后的數(shù)組拷貝 function Start ( ){var arr = new Array ("Hello","World"):var arr2 = new Array ("!");var joined = arr.Concat ( arr2 ); //現(xiàn)在jointed包含所有3個(gè)字符串Print ( joined ); //打印"Hello","World","!" }◆ function Join ( seperator :string ) : String描述:鏈接數(shù)組內(nèi)容為一個(gè)字符串。元素將被seperator字符串分割,并返回?cái)?shù)組的拷貝 function Start ( ){var arr = new Array ("Hello" , "World");print ( arr . join (" , "));//打印"Hello,World" }◆ function Pop ( ) : object描述:移除數(shù)組最后一個(gè)元素并返回它。var arr = new Array ("Hello ","World");arr . Pop ( );print ( arr );//只打印"Hello" ◆ function Push (value : object) : int描述: 添加value到數(shù)組末端。并返回新數(shù)組長(zhǎng)度。 var arr = new Array ("Hello"); arr.Push ("World"); print ( arr );//打印"Hello","World" ◆ function RemoveAt (index : int ) : void描述:從數(shù)組中移除索引為index的元素。 var arr = new Array ("Hello" , " and good morning" , "World "); arr.Remove ( 1 ) ; //移除 "and good morning" print ( arr );//打印 " Hello World " ◆ function Reverse () : Array描述:顛倒數(shù)組中所有元素順序。 var hello = new Array (" Hello " ," World ") ; hello Reverse( ) ; print (hello);//打印World,Hello ◆ function Shift ( ) :object描述:移除數(shù)組的第一個(gè)元素并返回它。 var arr = new Array ( " Hello " , " World "); arr . Shift ( ) ; print ( " World " ) ; //現(xiàn)在arr只包含" World " ◆ function Sort( ) : Array描述:排序所有數(shù)組元素 var hello = new Array ( " e " ," a " ," b "); hello . Sort ( ) ; print ( hello ) ;// 打印 a ,b ,c ◆ function Unshift ( newElement : object , optionalElement : object ) : int描述: Unshift 添加一個(gè)或多個(gè)元素到數(shù)組的開(kāi)始位置并返回新的數(shù)組長(zhǎng)度。 var arr = new Array (" Hello "," World "); arr . Unshift (" This "," is "); print ( arr ) ;//打印 This,is,Hello,World BitStream 類(lèi)BitStream 類(lèi)表示序列化的變量,打包到一個(gè)流中。 數(shù)據(jù)可以被序列化,傳輸,然后遠(yuǎn)端使用這個(gè)類(lèi)接受。參考 Network View component reference 獲取關(guān)于網(wǎng)絡(luò)同步的信息和Network. OnSerializeNetworkView函數(shù)獲取更多信息。變量◆ var isReading : bool描述:這個(gè)BitStream現(xiàn)在在被讀嗎? 參考Network. OnSerializeNetworkView◆ var isWriting : bool描述:這個(gè)BitStream現(xiàn)在在被寫(xiě)嗎? 參考Network. OnSerializeNetworkView函數(shù)◆ function Serialize (ref value : bool ) : void ◆ function Serialize (ref value : char ) : void ◆ function Serialize (ref value : short) : void ◆ function Serialize (ref value : int ) : void ◆ function Serialize (ref value : float , maxDelta : float = 0.00001F) : void ◆ function Serialize (ref value : Quaternion, maxDelta : float = 0.00001F) : void ◆ function Serialize (ref value : Vector3, maxDelta : float = 0.00001F) : void ◆ function Serialize (ref value : NetworkPlayer ) : void ◆ function Serialize (ref viewID: NetworkViewID ) : void描述:BitStream類(lèi)可以序列化幾個(gè)不同類(lèi)型的變量。 包含:bool , char , short , int , float , Quaternion , Vector3 和 NetworkPlayer 注意serialize ( char )系列化一個(gè)字節(jié),因此,它只能用于 0......255之間的字符。BoneWeight 結(jié)構(gòu)網(wǎng)格上一個(gè)頂點(diǎn)的蒙皮骨骼權(quán)值 每個(gè)被蒙皮的點(diǎn)至多有四個(gè)骨頭。所有權(quán)值的和應(yīng)該為1。權(quán)值和骨骼索引應(yīng)該被以權(quán)值遞減的順序定義。如果一個(gè)頂點(diǎn)被少于四個(gè)骨骼影響,剩下的權(quán)值應(yīng)該為0。 參見(jiàn):Mesh.boneWeights變量。變量◆ var boneIndex0 : int描述:第一個(gè)骨骼的索引。 參見(jiàn):weight0 .◆ var boneIndex1 : int描述:第二個(gè)骨骼的索引。參見(jiàn):weight1.◆ var boneIndex2 : int描述:第三個(gè)骨骼的索引。 參見(jiàn):weight2 .◆ var boneIndex3 : int描述:第四個(gè)骨骼的索引。 參見(jiàn):weight3 .◆ var weight0 : float描述:第一個(gè)骨骼的蒙皮權(quán)值。 參見(jiàn):boneIndex0.◆ var weight1 : float描述:第二個(gè)骨骼的蒙皮權(quán)值。 參見(jiàn):boneIndex1.◆ var weight2 : float描述:第三個(gè)骨骼的蒙皮權(quán)值。 參見(jiàn):boneIndex2.◆ var weight3 : float描述:第四個(gè)骨骼的蒙皮權(quán)值。 參見(jiàn):boneIndex3.Bounds 結(jié)構(gòu)代表一個(gè)軸對(duì)齊包圍盒。 一個(gè)軸對(duì)齊包圍盒,簡(jiǎn)稱(chēng)為AABB,是與坐標(biāo)軸對(duì)齊的box并且完全包圍一些物體。因?yàn)檫@個(gè)box不會(huì)繞著軸旋轉(zhuǎn),所以它可以只用center和extents定義,或者用min和max點(diǎn)定義。 Bounds被Collider.bounds,Mesh.bounds,Renderer.bounds使用。變量◆var center : Vector3描述:包圍盒子的中心◆var extents : Vector3描述:box的寬度。這個(gè)總是size的一半◆var max : Vector3描述:box的最大點(diǎn)。這個(gè)總是等于center + extents。◆var min : Vector3描述:box的最小點(diǎn)。這個(gè)總是等于center - extents。◆var size : Vector3描述:box的總大小。這個(gè)總是extents的二倍。 size.x是寬度, size.y 是高度, size.z 是長(zhǎng)度。構(gòu)造函數(shù)◆static function Bounds ( center : Vector3 , size : Vector3 ) : Bounds描述:用給定的center和總size創(chuàng)建新的Bounds。Bounds extents將是給定size的一半。 var bounds = Bounds ( Vector3.zero , Vector3(1,2,1));//在原點(diǎn)常見(jiàn)柱狀包圍盒 函數(shù)◆function Contains ( point : Vector3 ) : bool描述:point 包含在這個(gè)包圍盒中嗎 ?◆function Encapsulate ( point : Vector3 ) : void描述:增大Bounds以包含這個(gè)point. ◆function Encapsulate ( bounds : Bounds ) : void描述:增大bounds來(lái)封裝另一個(gè)bounds。◆function Expand ( amount : float ) : void描述:沿著每個(gè)面按照amount增加它的size來(lái)擴(kuò)展這個(gè)bounds。◆function Expand ( amount : Vector3 ) : void描述:沿著每個(gè)面按照amount增加它的size來(lái)擴(kuò)展這個(gè)bounds。◆function IntersectRay ( ray : Ray ) : bool描述:ray與這個(gè)包圍盒相交嗎?◆function IntersectRay ( ray : Ray , out distance : float ) : bool描述:ray與這個(gè)包圍盒相交嗎? 當(dāng)IntersectRay返回真,distance將是到射線源點(diǎn)的距離。◆function SetMinMax ( min : Vector3, max : Vector3 ) : void描述:設(shè)定邊界為盒子的min和max值。 使用這個(gè)函數(shù)要比分別指定min和max更快。◆function SqrDistance ( point : Vector3 ) : float描述: 點(diǎn)到這個(gè)包圍盒的最小平方距離。◆function ToString ( ) : string描述:返回一個(gè)格式化好的字符串collision 類(lèi)描述碰撞 Collision 信息被傳遞到Collider . OnCollisionEnter , Collider . OnCollisionStay和Collider.OnCollisionExit事件。參見(jiàn): ContactPoint.變量◆var collider : Collider描述:碰撞到的Collider ( 只讀 ). 為了得到所有被碰撞到的碰撞器的細(xì)節(jié),你需要迭代接觸點(diǎn)( contacts屬性)。◆var contacts : ContactPoint [ ]描述:接觸點(diǎn)由物理引擎產(chǎn)生。 每個(gè)contact包含一個(gè)接觸點(diǎn),法線和兩個(gè)發(fā)生碰撞的碰撞器(參考ContactPoint)。在OnCollisionStay或者OnCollisionEnter內(nèi)可以確保contacts有至少一個(gè)元素。 function OnCollisionStay ( collision : Collision ){//檢查碰到碰撞器是否有剛體//然后使用一個(gè)力for ( var contact : ContactPoint in collision . contacts ){print ( contact.thisCollider . name + "hit" + contact . otherCollider .name );//可視化接觸點(diǎn) Debug.DrawRay ( contact . point , contact . normal, Color .white ) ;} } //一枚手榴彈,在擊中一個(gè)表面時(shí)初始化一個(gè)爆炸預(yù)設(shè),然后銷(xiāo)毀它 var explosionPrefab : Transform; function OnCollisionEnter( collision : Collision ){ //旋轉(zhuǎn)這個(gè)物體使y軸面沿著表面法線的方向var contact = collision . contact [ 0 ];var rot = Quaternion . FromToRotation ( Vector3.up , contact . normal ) ;var pos = contact . point ;Instantiate ( explosionPrefab , pos , rot ) ;Destory ( gameObject );//銷(xiāo)毀這個(gè)投射物 }◆var gameObject : GameObject描述:/ gameObject / 是與之碰撞的物體(只讀)◆var relativeVelocity : Vector3描述: 兩個(gè)碰撞物體的相對(duì)線形速度(只讀)。 //當(dāng)以較大的速度碰到一個(gè)物體時(shí)播放聲音 function OnCllisionEnter ( collision : Collision ){if ( collision . relativeVelocity . magnitude > 2 )audio .Play ( ); }◆var rigibody : Rigidbody描述:碰撞到的Rigidbody(只讀),如果碰到的物體是一個(gè)沒(méi)有附加剛體的碰撞器,返回null //讓所有碰到的剛體向上飛 function OnCollisionStay ( collision : Collision ){//檢查碰到的碰撞器是否有一個(gè)剛體,然后使用力if ( collision . rigidbody ){collision . rigidbody .AddForce ( Vector3 . up * 15 ) ;} }◆var transform : Transform描述:碰撞到的物體的Transform(只讀)。 如果碰到一個(gè)帶有Rigidbody的碰撞器,transform將是所有附加剛體的變換。如果碰到了一個(gè)沒(méi)有剛體的碰撞器,transform將是所有附加碰撞器的變換。color 結(jié)構(gòu)表示RGBA顏色。 這個(gè)結(jié)構(gòu)被用在整個(gè)Unity中傳遞顏色。每個(gè)顏色組件是一個(gè)0到1之間的浮點(diǎn)數(shù)。 組件(r ,g ,b )在RGB顏色空間內(nèi)定義一個(gè)顏色。Alpha組件(a)透明性 - alpha為0是完全不透明,alpha為1是完全透明。變量◆var a : float描述:顏色的Alpha組件。 var color = Color . white ; color . a = 0 ;◆var b : float描述:顏色的藍(lán)色組件。 var color = Color .white; color .b = 0 ;◆var g : float描述:顏色的綠色組件 var color = Color . white ; color . g = 0 ;◆var grayscale : float描述:顏色的灰度值(只讀) var color = Color ( 3 , 4 ,6 ) ; print ( color . grayscale ) ;◆var r : float描述:顏色的紅色組件。 var color = Color . white ; color . r = 0var this [ index : int ] : float描述:分別使用[ 0 ] ,[ 1 ] ,[ 2 ] ,[ 3 ]訪問(wèn)r ,g , b ,a組件。 Color p ; p [ 1 ] = 5 ;//與p .g = 5相同 構(gòu)造函數(shù)◆static function Color ( r : float , g : float , b : float, a: float ) : Color描述:用給定的 r , g , b , a ,組件構(gòu)建一個(gè)新的顏色。 var color = Color ( 0.2 , 0.3 , 0.4 , 0.5 ) ;◆static function Color ( r : float , g : float , b : float ) : Color描述:用給定的 r , g , b 組件構(gòu)建一個(gè)新的顏色并設(shè)置 a 為1 var color = Color (0.2 , 0.3 , 0.4 ) ;函數(shù)◆function ToString ( ):string描述:返回格式化好的這個(gè)顏色的字符串。print ( Color .white ) ;類(lèi)變量◆static var black : Color描述:黑色。 RGBA為( 0 , 0 , 0 , 1 ).◆static var blue : Color描述:藍(lán)色。 RGBA為( 0 , 0 , 1 , 1 ).◆static var clear : Color描述:完全透明。 RGBA為( 0 ,0, 0, 0 ).◆static var eyan : Color描述:青色。 RGBA為( 0 , 1 , 1 , 1 ). ◆static var gray : Color描述:灰色。RGBA為 ( 5 , 5 , 5 , 1 ).◆static var green : Color描述:綠色。RGBA為(0, 1 , 0, 1 ).◆static var grey : Color描述:英式拼法為gray。RGBA為(0.5 , 0.5 , 0.5 , 1 ).◆static var magenta : Color描述:紫紅色。RGBA為(1 , 0 , 1 , 1 ).◆static var red : Color描述:全紅。RGBA為(1 , 0 , 0, 1 ).◆static var white : Color描述:全白。RGBA為(1 , 1 , 1 , 1 ).◆static var yellow : Color描述:黃色。RGBA是怪異的(1 , 235/255 , 4/255 , 1 ),但是這個(gè)顏色看起來(lái)非常好!類(lèi)方法◆static function Lerp ( a : Color , b : Color , t : float ) : Color 描述:在顏色a和顏色b之間按照t插值。 / t /被限定到0 和1之間,當(dāng)t為0時(shí)返回a . 當(dāng)t為1時(shí)返回b◆static operator * ( a : Color , b : Color) : Color描述:乘兩個(gè)顏色,每個(gè)組件被分別乘。◆static operator * ( a : Color , b : float) : Color描述:用浮點(diǎn)數(shù)b乘以顏色a。每個(gè)組件被分別乘。◆static operator * ( a : float , b : Color) : Color描述:用浮點(diǎn)數(shù)b乘以顏色a。每個(gè)組件被分別乘。◆static operator + ( a : Color , b : Color) : Color描述:加兩個(gè)顏色,每個(gè)組件被分別加。◆static operator - ( a : Color , b : Color) : Color描述:從顏色a中減去顏色b。每個(gè)組件被分別減。◆static operator / ( a : Color , b : float) : Color描述:乘用浮點(diǎn)數(shù)b除以a。每個(gè)組件被分別除。◆static implicit function Color ( v : Vectro4 ) : Color描述:Colors可以被隱式轉(zhuǎn)化為Vector4,或由它轉(zhuǎn)化而來(lái)。◆static implicit function Vector4 ( c : Color ) : Vector4描述:Colors以被隱式的轉(zhuǎn)化為Vector4,或由它轉(zhuǎn)化而來(lái)。ContactPoint 結(jié)構(gòu)描述:碰撞發(fā)生的接觸點(diǎn)。 接觸點(diǎn)被存儲(chǔ)在collision結(jié)構(gòu)中,參見(jiàn)collision , collision . OnCollisionEnter, Collision . OnCollisionStay , Collision . OnCollisionExit.變量◆var normal : Vector3描述:接觸點(diǎn)的法線◆var otherCollider : Collider描述:碰撞中的另一個(gè)碰撞器◆var point : Vector3描述:接觸點(diǎn)◆var thisCollider : Collider? 描述:碰撞中的第一個(gè)碰撞器ControllerColliderHit 類(lèi)ControllerColliderHit被CharacterController . OnControllerColliderHit使用來(lái)給出詳細(xì)的關(guān)于碰撞和如何處理它們的信息。

?

總結(jié)

以上是生活随笔為你收集整理的Unity3D脚本中文系列教程(五)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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