下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Unity3D腳本中文教程Part1一、腳本概覽這是一個(gè)關(guān)于Unity內(nèi)部腳本如何工作的簡(jiǎn)單概覽。Unity內(nèi)部的腳本是通過(guò)附加自定義腳本對(duì)象到游戲物體組成的。在腳本對(duì)象內(nèi)部不同志的函數(shù)被特定的事件調(diào)用。最常用的列在下面Update這個(gè)函數(shù)在渲染一幀之前被調(diào)用這里是大部分游戲行為代碼被執(zhí)行的地方除了物理代碼。FixedUpdate這個(gè)函數(shù)在每個(gè)物理時(shí)間步被調(diào)用一次這是處理基于物理游戲的地方。在任何函數(shù)之外的代碼在任何函數(shù)之外的代碼在物體被加載的時(shí)候運(yùn)行這個(gè)可以用來(lái)初始化腳本狀態(tài)。注意文檔的這個(gè)部份假設(shè)你是用Javascript參考用C編寫(xiě)獲取如何使用C和Boo編寫(xiě)腳本的信息。你也能定義事件句柄它們的名稱(chēng)都以O(shè)n開(kāi)始例如OnCollisionEnter為了查看完整的預(yù)定義事件的列表參考MonoBehaviour文檔。概覽常用操作大多數(shù)游戲物體的操作是通過(guò)游戲物體的Transform或Rigidbody來(lái)做的在行為腳本內(nèi)部它們可以分別通過(guò)transform和rigidbody訪問(wèn)因此如果你想繞著Y軸每幀旋轉(zhuǎn)5度你可以如下寫(xiě)functionUpdatetransform.Rotate050如果你想向前移動(dòng)一個(gè)物體你應(yīng)該如下寫(xiě)functionUpdatetransform.Translate002概覽跟蹤時(shí)間Time類(lèi)包含了一個(gè)非常重要的類(lèi)變量稱(chēng)為deltaTime這個(gè)變量包含從上一次調(diào)用Update或FixedUpdate根據(jù)你是在Update函數(shù)還是在FixedUpdate函數(shù)中到現(xiàn)在的時(shí)間量。所以對(duì)于上面的例子修改它使這個(gè)物體以一個(gè)恒定的速度旋轉(zhuǎn)而不依賴于幀率functionUpdatetransform.Rotate05Time.deltaTime0移動(dòng)物體functionUpdatetransform.Translate002Time.deltaTime如果你加或是減一個(gè)每幀改變的值你應(yīng)該將它與Time.deltaTime相乘。當(dāng)你乘以Time.deltaTime時(shí)你實(shí)際的表達(dá)我想以10米/秒移動(dòng)這個(gè)物體不是10米/幀。這不僅僅是因?yàn)槟愕挠螒驅(qū)ⅹ?dú)立于幀而運(yùn)行同時(shí)也是因?yàn)檫\(yùn)動(dòng)的單位容易理解。米/秒另一個(gè)例子如果你想隨著時(shí)間增加光照的范圍。下面的表達(dá)式以2單位/秒改變半徑。functionUpdatelight.range2.0Time.deltaTime當(dāng)通過(guò)力處理剛體的時(shí)候你通常不必用Time.deltaTime因?yàn)橐嬉呀?jīng)為你考慮到了這一點(diǎn)。概覽訪問(wèn)其他組件組件被附加到游戲物體附加Renderer到游戲物體使它在場(chǎng)景中渲染附加一個(gè)Camera使它變?yōu)橄鄼C(jī)物體所有的腳本都是組件因?yàn)樗鼈兡鼙桓郊拥接螒蛭矬w。最常用的組件可以作為簡(jiǎn)單成員變量訪問(wèn)Component可如下訪問(wèn)TransformtransformRigidbodyrigidbodyRendererrendererCameracameraonlyoncameraobjectsLightlightonlyonlightobjectsAnimationanimationCollidercollider…等等。對(duì)于完整的預(yù)定義成員變量的列表。查看ComponentBehaviour和MonnoBehaviour類(lèi)文檔。如果游戲物體沒(méi)有你想取的相同類(lèi)型的組件上面的變量將被設(shè)置為null。任何附加到一個(gè)游戲物體的組件或腳本都可以通過(guò)GetComponent訪問(wèn)。transform.Translate030//等同于GetComponentTransform.Translate010注意transfom和Transform之間大小寫(xiě)的區(qū)別前者是變量小寫(xiě)后者是類(lèi)或腳本名稱(chēng)大寫(xiě)。大小寫(xiě)不同使你能夠從類(lèi)和腳本名中區(qū)分變量。應(yīng)用我們所學(xué)你可以使用GetComponent找到任何附加在同一游戲物體上的腳本和組件請(qǐng)注意要使用下面的例子能夠工作你需要有一個(gè)名為OtherScript的腳本其中包含一個(gè)DoSomething函數(shù)。OtherScript腳本必須與下面的腳本附加到相同的物體上。//這個(gè)在同一游戲物體桑找到名為OtherScript的腳本//并調(diào)用它上加的DoSomethingfunctionUpdateotherScriptGetComponentOtherScriptotherScript.DoSomething概覽訪問(wèn)其它游戲物體大多數(shù)高級(jí)的代碼不僅需要操作一個(gè)物體Unity腳本接口有各種方法來(lái)找到并訪問(wèn)其他游戲物體和組件。在下面我們假定有個(gè)一名為OtherScriptjs的腳本附加到場(chǎng)景的游戲物體上。varfoo5functionDoSomethingparam:Stringprintparamquotwithfoo:quotfoo1.通過(guò)檢視面板賦值引用你可以通過(guò)檢視面板賦值變量到任何物體//變換拖動(dòng)到target的物體vartarget:TransformfunctionUpdatetarget.Translate010你也可以在檢視面板中公開(kāi)到其他物體的引用下面你可以拖動(dòng)一個(gè)包含的游戲物體到檢視面板中的target槽。//設(shè)置在檢視面板中賦值的target變量上的foo調(diào)用DoSomethingvartarget:OtherScriptfunctionUpdate//設(shè)置target物體的foo變量target.foo2//調(diào)用target上的DoSomethingtarget.DoSomethingquotHelloquot2.通過(guò)物體層次定位對(duì)于一個(gè)已經(jīng)存在的物體可以通過(guò)游戲物體的Transform組件來(lái)找到子和父物體//找到腳本所附加的//游戲物體的子―Hand∥transform.FindquotHandquot.Translate010一旦在層次視圖中找到這個(gè)變換你可以使用GetComponent來(lái)獲取其他腳本//找到名為―Hand∥的子//在附加到它上面的OtherScript中設(shè)置foo為2transform.FindquotHandquot.Translate010//找到名為―Hand∥的子//然后應(yīng)用一個(gè)力到附加在hand上的剛體transform.FindquotHandquot.GetComponentOtherScript.DoSomethingquotHelloquot//找到名為―Hand∥的了//然后應(yīng)用一個(gè)力到附加在hand上的剛體transform.FindquotHandquot.rigidbody.AddForce0100你可以循環(huán)所有的子//變換的所有子向上移動(dòng)10個(gè)單位forvarchild:Transformintransformchild.Translate010參考Transform類(lèi)文檔獲取更多信息。Part23.根據(jù)名稱(chēng)或標(biāo)簽定位.你可以使用GameObject.FindWithTag和GameObject.FindGameObjectsWithTag搜索具有特定標(biāo)簽的游戲物體使用GameObject.Find根據(jù)名稱(chēng)查找物體。functionStart//按照名稱(chēng)vargoGameObject.FindquotSomeGuyquotgo.transform.Translate010//按照標(biāo)簽varplayerGameObject.FindWithTagquotPlayerquotplayer.transform.Translate010你可以在結(jié)果上使用GetComponent在找到的游戲物體上得到任何腳本或組件。functionStart//按名稱(chēng)vargoGameObject.FindquotSomeGuyquotgo.GetComponentOtherScript.DoSomething//按標(biāo)簽varplayerGameObject.FindWithTagquotPlayerquotplayer.GetComponentOtherScript.DoSomething一些特殊的物體有快捷方式如主相機(jī)使用Camera.main。4.作為參數(shù)傳遞一些事件消息在事件包含詳細(xì)信息。例如觸發(fā)器事件傳遞碰撞物體的Collider組件到處理函數(shù)。OnTriggerStay給我們一個(gè)到碰撞器的引用。從這個(gè)碰撞器我們可以獲取附加到其上的剛體。functionOnTriggerStayother:Collider//如果另一個(gè)碰撞器也有一個(gè)剛體//應(yīng)用一個(gè)力到它上面ifother.rigidbodyother.rigidbody.AddForce020或者我們可以通過(guò)碰撞器獲取附加在同一個(gè)物體上的任何組件。functionOnTriggerStayother:Collider//如果另一個(gè)碰撞器附加了OtherScript//調(diào)用它上面的DoSomething//大多數(shù)時(shí)候碰撞器不會(huì)附加腳本//所以我們需要首先檢查以避免null引用異常ifother.GetComponentOtherScriptother.GetComponentOtherScript.DoSomething注意通過(guò)上述例子中的other變量你可以訪問(wèn)碰撞物體中的任何組件。5.一種類(lèi)型的所有腳本使用Object.FindObjectsOfType找到所有具有相同類(lèi)或腳本名稱(chēng)的物體或者使用Object.FindObjectOfType.找到這個(gè)類(lèi)型的第一個(gè)物體。functionStart//找到場(chǎng)景中附加了OtherScript的任意一個(gè)游戲物體varother:OtherScriptFindObjectOfTypeOtherScriptother.DoSomething概覽向量Unity使用Vector3類(lèi)同一表示全體3D向量3D向量的不同組件可以通過(guò)想xy和z成員變量訪問(wèn)。varaPosition:Vector3aPosition.x1aPosition.y1aPosition.z1你也能夠使用Vector3構(gòu)造函數(shù)來(lái)同時(shí)初始化所有組件。varaPositionVector3111Vector3也定義了一些常用的變量值。vardirectionVector3.up//與Vector3010相同單個(gè)向量上的操作可以使用下面的方式訪問(wèn)someVector.Normalize使用多個(gè)向量的操作可以使用Vector3類(lèi)的數(shù)theDistanceVector3.DistanceoneVectorotherVector注意你必須在函數(shù)名之前寫(xiě)Vector3來(lái)告訴JavaScript在哪里找到這個(gè)函數(shù)這適用于所有類(lèi)函數(shù)你也可以使用普通數(shù)學(xué)操作來(lái)操縱向量。combinedvector1vector2查看Vector3類(lèi)文檔獲取完整操縱和可用屬性的列表。概覽成員變量amp全局變量變量定義在任何函數(shù)之外的變量是一個(gè)成員變量。在Unity中這個(gè)變量可以通過(guò)檢視面板來(lái)訪問(wèn)任何保存在成員變量中的值也可以自動(dòng)隨工程保存。varmemberVariable0.0上面的變量將在檢視面板中顯示為名為quotMemberVariablequot的數(shù)值屬性。如果你設(shè)置變量的類(lèi)型為一個(gè)組件類(lèi)型例如TransformRigidbodyCollider任何腳本名稱(chēng)等等然后你可以在檢視面板中通過(guò)拖動(dòng)一個(gè)游戲物體來(lái)設(shè)置它們。varenemy:TransformfunctionUpdateifVector3.Distanceenemy.positiontransform.positionlt10printquotIsensetheenemyisnearquot你也可以創(chuàng)建私有成員變量。私有成員變量可以用來(lái)存儲(chǔ)那些在該腳本之外不可見(jiàn)的狀態(tài)。私有成員變量不會(huì)被保存到磁盤(pán)并且在檢視面板中不能編輯。當(dāng)它被設(shè)置為調(diào)試模式時(shí)它們?cè)跈z視面板中可見(jiàn)。這允許你就像一個(gè)實(shí)時(shí)更新的調(diào)試器一樣使用私有變量。privatevarlastCollider:ColliderfunctionOnCollisionEntercollisionInfo:CollisionlastCollidercollisionInfo.other全局變量你也可以使用static關(guān)鍵字創(chuàng)建全局變量這創(chuàng)造了一個(gè)全局變量名為someGlobal//TheScriptName.js中的一個(gè)靜態(tài)變量staticvarsomeGlobal5//你可以在腳本內(nèi)部像普通變量一樣訪問(wèn)它printsomeGlobalsomeGlobal1為了從另一個(gè)腳本訪問(wèn)它你需要使用這個(gè)腳本的名稱(chēng)加上一個(gè)點(diǎn)和全局變量名。printTheScriptName.someGlobalTheScriptName.someGlobal10Part3概覽實(shí)例化實(shí)例化復(fù)制一個(gè)物體。包含所有附加的腳本和整個(gè)層次。它以你期望的方式保持引用。到外部物體引用的克隆層次將保持完好在克隆層次上到物體的引用映射到克隆物體。實(shí)例化是難以置信的快和非常有用的。因?yàn)樽畲蠡厥褂盟潜匾?。例如這里是一個(gè)小的腳本當(dāng)附加到一個(gè)帶有碰撞器的剛體上時(shí)將銷(xiāo)毀它自己并實(shí)例化一個(gè)爆炸物體。varexplosion:Transform//當(dāng)碰撞發(fā)生時(shí)銷(xiāo)毀我們自己//并生成給一個(gè)爆炸預(yù)設(shè)functionOnCollisionEnterDestroygameObjectvartheClonedExplosion:TransformtheClonedExplosionInstantiateexplosiontransform.positiontransform.rotation實(shí)例化通常與預(yù)設(shè)一起使用概覽CoroutinesampYield在編寫(xiě)游戲代碼的時(shí)候常常需要處理一系列事件。這可能導(dǎo)致像下面的代碼。privatevarstate0functionUpdateifstate0//做步驟0state1returnifstate1//做步驟1state2return//…更方便的是使用yield語(yǔ)句。yield語(yǔ)句是一個(gè)特殊類(lèi)型的返回這個(gè)確保在下次調(diào)用時(shí)該函數(shù)繼續(xù)從該yield語(yǔ)句之后執(zhí)行。whiletrue//做步驟0yield//等待一幀//做步驟1yield//等待一幀//...你也可以傳遞特定值給yield語(yǔ)句來(lái)延遲Update函數(shù)的執(zhí)行直到一個(gè)特定的事件發(fā)生。//做一些事情yieldWaitForSeconds5.0//等待5秒//做更多事情…可以疊加和連接coroutines。這個(gè)例子執(zhí)行Do在調(diào)用之后立即繼續(xù)。DoprintquotThisisprintedimmediatelyquotfunctionDoprintquotDonowquotyieldWaitForSeconds2printquotDo2secondslaterquot這個(gè)例子將執(zhí)行Do并等待直到它完成才繼續(xù)執(zhí)行自己。//鏈接coroutineyieldStartCoroutinequotDoquotprintquotAlsoafter2secondsquotprintquotThisisaftertheDocoroutinehasfinishedexecutionquotfunctionDoprintquotDonowquotyieldWaitForSeconds2printquotDo2secondslaterquot任何事件處理句柄都可以是一個(gè)coroutine注意你不能在Update或FixedUpdate內(nèi)使用yield但是你可以使用StartCoroutine來(lái)開(kāi)始一個(gè)函數(shù)。參考YieldInstructionWaitForSecondsWaitForFixedUpdateCoroutineandMonoBehaviour.StartCoroutine獲取更多使用yield的信息。概覽用C編寫(xiě)腳本除了語(yǔ)法使用C或者Boo編寫(xiě)腳本還有一些不同。最需要注意的是1.從MonoBehaviour繼承所有的行為腳本必須從MonoBehaviour繼承直接或間接。在Javascript中這自動(dòng)完成但是必須在C或Boo腳本中顯示申明。如果你在Unity內(nèi)部使用Asset-gtCreate-gtCSharp/BooScript菜單創(chuàng)建腳本創(chuàng)建模板已經(jīng)包含了必需的定義。publicclassNewBehaviourScript:MonoBehaviour...//CclassNewBehaviourScriptMonoBehaviour:...Boo2.使用Awake或Start函數(shù)來(lái)初始化Javascript中放置在函數(shù)之外的代碼在C或Boo中要放置在Awake或Start中。Awake和Start的不同是Awake在場(chǎng)景被加載時(shí)候運(yùn)行而Start在第一次調(diào)用Update或FixedUpdate函數(shù)之前被調(diào)用所有Awake函數(shù)在任何Start函數(shù)調(diào)用之前被調(diào)用。3.類(lèi)名必須與文件名相同Javascript中類(lèi)名被隱式地設(shè)置為腳本的文件名不包含文件擴(kuò)展名。在c和Boo中必須手工做。4.在C中Coroutines有不同語(yǔ)法。Coroutines必有一個(gè)IEnumerator返回類(lèi)型并且yield使用yieldreturn…而不是yield…usingSystem.CollectionsusingUnityEnginepublicclassNewBehaviourScript:MonoBehaviour//CcoroutineIEnumeratorSomeCoroutine//等一幀yieldreturn0//等兩秒yieldreturnnewWaitForSeconds25不要使用命名空間目前Unity還不支持將代碼放置在一個(gè)命名空間中這個(gè)需要將會(huì)出在未來(lái)的版本中。6.只有序列化的成員變量會(huì)顯示在檢視面板中私有和保護(hù)成員變量只在專(zhuān)家模式中顯示屬性不被序列化或顯示在檢視面板中。7避免使用構(gòu)造函數(shù)不要在構(gòu)造函數(shù)中初始化任何變量使用Awake或Start實(shí)現(xiàn)這個(gè)目的。即使是在編輯模式中Unity也自動(dòng)調(diào)用構(gòu)造函數(shù)這通常發(fā)生在一個(gè)腳本被編譯之后因?yàn)樾枰{(diào)用構(gòu)造函數(shù)來(lái)取向一個(gè)腳本的默認(rèn)值。構(gòu)造函數(shù)不僅會(huì)在無(wú)法預(yù)料的時(shí)刻被調(diào)用它也會(huì)為預(yù)設(shè)或未激活的游戲物體調(diào)用。單件模式使用構(gòu)造函數(shù)可能會(huì)導(dǎo)致嚴(yán)重的后果帶來(lái)類(lèi)似隨機(jī)null引用異常。因此如果你想實(shí)現(xiàn)如一個(gè)單件模式不要使用構(gòu)造函數(shù)而是使用Awake。其實(shí)上沒(méi)有理由一定要在繼續(xù)自MononBehaviour類(lèi)的構(gòu)造函數(shù)中寫(xiě)任何代碼。概覽最重要的類(lèi)Javascript中可訪問(wèn)的全局函數(shù)或C中的基類(lèi)移動(dòng)/旋轉(zhuǎn)物體動(dòng)畫(huà)系統(tǒng)剛體FPS或第二人稱(chēng)角色控制器概覽性能優(yōu)化1使用靜態(tài)類(lèi)型在使用Javascript時(shí)最重要的優(yōu)化是使用靜態(tài)類(lèi)型而不是動(dòng)態(tài)類(lèi)型Unity使用一種叫做類(lèi)型推理的技術(shù)來(lái)自自動(dòng)轉(zhuǎn)換Javascript為靜態(tài)類(lèi)型編碼而不需要你做任何工作。varfoo5在上面的例子里foo會(huì)自動(dòng)被推斷為一個(gè)整型值。因此Unity可能使用大量的編譯時(shí)間來(lái)優(yōu)化。而不使用耗時(shí)的動(dòng)態(tài)名稱(chēng)變量查找等。這就是為什么Unity比其他在JavaScript的實(shí)現(xiàn)平均快20倍的原因之一。唯一的問(wèn)題是有時(shí)并非一切都可以做類(lèi)型推斷。Unity將會(huì)為這些變量重新使用動(dòng)態(tài)類(lèi)型。通過(guò)回到動(dòng)態(tài)類(lèi)型編寫(xiě)JavaScript代碼很簡(jiǎn)單。但是這也使得代碼運(yùn)行速度較慢。讓我們看一些例子functionStartvarfooGetComponentMyScriptfoo.DoSomething這里foo將是動(dòng)態(tài)類(lèi)型因此調(diào)用DoSomething函數(shù)將使用較長(zhǎng)時(shí)間因?yàn)閒oo的類(lèi)型是未知的它必須找出它是否支持DoSomething函數(shù)如果支持調(diào)用它。functionStartvarfoo:MyScriptGetComponentMyScriptfoo.DoSomething這里我們強(qiáng)制foo為指定類(lèi)型你將獲得更好的性能。2使用pragmastrict當(dāng)然現(xiàn)在問(wèn)題是你通常沒(méi)有意識(shí)到你在使用動(dòng)態(tài)類(lèi)型。pragmastrict解決了這個(gè)簡(jiǎn)單的在腳本頂部添加pragmastrict。然后unity將在腳本中禁用動(dòng)態(tài)類(lèi)型強(qiáng)制使用靜態(tài)類(lèi)型如果一個(gè)類(lèi)型未知。Unity將報(bào)告編譯錯(cuò)誤。那么在這種情況下foo將在編譯時(shí)產(chǎn)生一個(gè)錯(cuò)誤pragmastrictfunctionStartvarfooGetComponentMyScriptfoo.DoSomething3.緩存組件查找另一個(gè)優(yōu)化是組件緩存。不幸的是該優(yōu)化需要一點(diǎn)編碼并且不一定是值得的但是如果你的腳本是真的用了很長(zhǎng)時(shí)間了你需要把最后一點(diǎn)表現(xiàn)出來(lái)這是一個(gè)很好的優(yōu)化。當(dāng)你訪問(wèn)一個(gè)組件通過(guò)GetComponent或訪問(wèn)變量Unity會(huì)通過(guò)游戲?qū)ο笳业秸_的組件。這一次可以很容易地通過(guò)緩存保存在一個(gè)私有變量里引用該組件。簡(jiǎn)單地把這個(gè)functionUpdatetransform.Translate005變成privatevarmyTransform:TransformfunctionAwakemyTransformtransformfunctionUpdatemyTransform.Translate005后者的代碼將運(yùn)行快得多因?yàn)閁nity沒(méi)有找到變換在每一幀游戲組件中的對(duì)象。這同樣適用于腳本組件在你使用GetComponent代替變換或者其它的東西。4.使用內(nèi)置數(shù)組內(nèi)置數(shù)組的速度非??焖哉?qǐng)使用它們。而整列或者數(shù)組類(lèi)更容易使用因?yàn)槟憧梢院苋菀椎靥砑釉厮麄儙缀鯖](méi)有相同的速度。內(nèi)置數(shù)組有一個(gè)固定的尺寸但大多數(shù)時(shí)候你事先知道了最大的大小在可以只填寫(xiě)了以后。關(guān)于內(nèi)置數(shù)組最好的事情是他們直接嵌入在一個(gè)結(jié)構(gòu)緊湊的緩沖區(qū)的數(shù)據(jù)類(lèi)型沒(méi)有任何額外的類(lèi)型信息或其他開(kāi)銷(xiāo)。因此遍歷是非常容易的作為一切緩存在內(nèi)存中的線性關(guān)系。privatevarpositions:Vector3functionAwakepositionsnewVector3100forvari0ilt100ipositionsiVector3.zero5.如果你不需要就不要調(diào)用函數(shù)最簡(jiǎn)單的和所有優(yōu)化最好
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度甲乙雙方云計(jì)算服務(wù)合同2篇
- 二零二五年度合同標(biāo)的金額調(diào)整補(bǔ)充協(xié)議3篇
- 2025年度版權(quán)許可使用合同(含影視音樂(lè))2篇
- 二零二五年度在線教育平臺(tái)合作協(xié)議認(rèn)證3篇
- 二零二五年度建筑公司分包合同5篇
- 二零二五年度教育培訓(xùn)項(xiàng)目合作與授權(quán)合同3篇
- 羽毛球發(fā)球課程設(shè)計(jì)
- 二零二五年度房地產(chǎn)分銷(xiāo)與綠色能源項(xiàng)目合作協(xié)議3篇
- 二零二五年度影視制作場(chǎng)地租賃協(xié)議書(shū)2篇
- 2025年度新能源汽車(chē)電池技術(shù)研發(fā)與轉(zhuǎn)讓合同
- 鄰近鐵路營(yíng)業(yè)線施工安全監(jiān)測(cè)技術(shù)規(guī)程 (TB 10314-2021)
- Exchange配置與規(guī)劃方案專(zhuān)項(xiàng)方案V
- 三年級(jí)上冊(cè)脫式計(jì)算練習(xí)200題及答案
- 新生兒腭裂護(hù)理查房課件
- 二年級(jí)下冊(cè)科學(xué)課程綱要
- 前交叉韌帶重建術(shù)后康復(fù)訓(xùn)練
- 河南近10年中考真題數(shù)學(xué)含答案(2023-2014)
- 八年級(jí)上學(xué)期期末家長(zhǎng)會(huì)課件
- 2024年大學(xué)試題(宗教學(xué))-佛教文化歷年考試高頻考點(diǎn)試題附帶答案
- 軟件項(xiàng)目服務(wù)外包工作管理辦法
- 紅薯系列產(chǎn)品項(xiàng)目規(guī)劃設(shè)計(jì)方案
評(píng)論
0/150
提交評(píng)論