国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Unity用腳本創(chuàng)建物體

這篇具有很好參考價值的文章主要介紹了Unity用腳本創(chuàng)建物體。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

引言:在游戲設(shè)計中,需要用到的物體都可以用編輯器放在場景中。但很多時候,無法事先創(chuàng)建所有需要的物體,如子彈、刷新的怪物之類。這些要么是根據(jù)玩家操作而隨時創(chuàng)建,要么是根據(jù)游戲玩法在特定時刻創(chuàng)建,都無法事先確定它們在什么時候出現(xiàn)。

而用腳本動態(tài)創(chuàng)建物體,即在游戲進(jìn)行中創(chuàng)建物體,是一項(xiàng)基本技能,本文將詳細(xì)講解實(shí)現(xiàn)這一功能的基本方法


一、預(yù)制

預(yù)制就是一個物體的模版,在游戲開發(fā)中,一般將物體設(shè)為預(yù)制,詳細(xì)見這篇文章:Unity入門

二、創(chuàng)建物體

利用預(yù)制創(chuàng)建物體,需要使用實(shí)例化方法Instantiate()。它需喲一個預(yù)制體的引用作為模版返回值總是新創(chuàng)建的那個物體的引用。如果預(yù)制體以GameObject類型傳入,那么返回的結(jié)果也是GameObject類型。

在實(shí)際使用時,有時候要具體制定新建物體的位置、朝向和父物體,因此Intantiate()方法也有多重重載形式,區(qū)別在于參數(shù)不同。這里展示三種重載形式

重載形式

參數(shù)1

參數(shù)2

參數(shù)3

參數(shù)4

僅指定父物體

預(yù)制

父物體的Transform類型,null表示沒有父物體,置于場景根節(jié)點(diǎn)

?文章來源地址http://www.zghlxwxcb.cn/news/detail-485657.html

?

指定位置和朝向

預(yù)制

空間位置,世界坐標(biāo)系,Vector3類型

朝向,Quaternion類型

?

指定位置、朝向和父物體

預(yù)制

空間位置,世界坐標(biāo)系,Vector3類型

朝向,Quaternion類型

父物體的Transform類型,null表示沒有父物體,置于場景根節(jié)點(diǎn)

預(yù)制體也可以用組件表示。由于組件可以代表所掛載的組件,因此如果以某個預(yù)制體上的組件作為模版,Instantiate方法依然會把該物體創(chuàng)造出來,同時返回新物體上同名的組件。這雖然保持了功能不變,但稍一不獲取組件的操作。

下面舉一個用腳本創(chuàng)建物體的例子

using UnityEngine;

?

public class TestInstantiate : MonoBehaviour

{

? ? ?public GameObject prefab;//設(shè)置為public,以便在編輯器中賦值

? ? ?void Start()

? ? ?{

? ? ? ?GameObject objA=Instantiate(prefab,null);//在場景根結(jié)點(diǎn)創(chuàng)建物體

? ? ? ?GameObject objB=Instantiate(prefab,transform);//創(chuàng)建一個物體,作為當(dāng)前腳本所在物體的子物體

? ? ? ?GameObject objC=Instantiate(prefab,new Vecrtor3(3,0,3),Quaternion.identity);//創(chuàng)建一個物體,確定位置和朝向

? ? ?}

}

用腳本創(chuàng)建物體在一些需要擺放精準(zhǔn)圖形的時候也會用到,下面是用腳本創(chuàng)建10個物體擺放成一個環(huán)形的例子

using UnityEngine;

?

public class TestInstantiate : MonoBehaviour

{

? ? ?public GameObject prefab;

? ? ?void Start()

? ? ?{

? ? ? ? ?for(int i=0;i<10;i++)

? ? ? ? {

? ? ? ? ? Vector3 pos=new Vector3(Mathf.Cos(i*(2*Mathf.PI)/10),0,Mathf.Sin(i*(2*Mathf.PI)/10);//用到了sin和cos在x-y坐標(biāo)系中的定義

? ? ? ? ? pos=pos*5;//半徑=5

? ? ? ? ?Instantiate(prefab,pos,Quaternion.identity);

? ? ? ?}

? ? ?}

}

三、創(chuàng)建組件

通常使用GameObject.AddComponent()方法,以下代碼先獲取Cube物體,再給它添加Rigidbody組件

using UnityEngine;

?

public class TestInstantiate : MonoBehaviour

{

? ? ?void Start()

? ? ?{

? ? ? ? GameObject go=GameObject.Find("Cube");

? ? ? ? ?go.AddComponent<Rigidbody>();

? ? ?}

}

四、銷毀物體或組件

使用Destroy()方法可以銷毀物體或組件,這里就不展開例子了。

但在這里有一個要點(diǎn)要注意:在執(zhí)行Destroy操作后,并不會立即銷毀該物體,而是稍后放在合適的時機(jī)去銷毀。這樣就保證了在那一幀里,對該物體的操作不會產(chǎn)生錯誤。

在個別情況下如果需要立即銷毀,Unity提供了DestroyImmediate()方法。

五、定時創(chuàng)建和銷毀物體

游戲中延遲創(chuàng)建物體和延遲銷毀物體是常見的需求。

延遲創(chuàng)建一般用于等待動畫結(jié)束和定時刷新怪物等。延遲銷毀物體則用于定時讓子彈、尸體消失等情況。

延遲需要準(zhǔn)確定時,如在未來的第幾秒執(zhí)行。這里舉例用簡易的Invoke方法。該方法有兩個參數(shù),第一個參數(shù)是以字符串表示的方法名稱,第二個參數(shù)表示延遲的事件,單位為秒。

Invoke方法可以延遲調(diào)用一個方法,但要求該方法沒有參數(shù)也沒有返回值

下面例子為用Invoke方法編寫一個每隔0.5秒生成一個物體的動態(tài)效果

Using UnityEngine;

public class TestInvoke : MonoBehaviour

{

? ?public Gameobject prefab;

? ?int counter=0;

? ?void Start()

? ?{

? ? ?Invoke("CreatePrefab",0.5f);

? ?}

? ?void CreatPrefab()

? ?{

? ? ? ? ?Vector3 POs=new Vector3(Mathf.Cos(counter*(2*Mathf.PI)/10),0,Mathf.Sin(counter*(2*Mathf.PI)/10));

? ? ? ? ? pos*=5;

? ? ? ? ? Instantiate(prefab,pos,Quaternion.identity);

? ? ? ? ? counter++;

? ? ? ? ? if(counter<10)

? ? ? ? ? {

? ? ? ? ? Invoke("CreatePrefab",0.5f);

? ? ? ? ? }

? ? }

}

延遲銷毀也可以用Invoke實(shí)現(xiàn),但由于延遲銷毀需求更加廠家,因此Unity為Destroy方法增添了延時的功能,Destroy的第二個參數(shù)用于制定銷毀延遲的事件,如:

Destroy(cube,0.5f);

?

到了這里,關(guān)于Unity用腳本創(chuàng)建物體的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Unity通過腳本更改物體的材質(zhì)

    Unity通過腳本更改物體的材質(zhì)

    ? ?

    2024年02月12日
    瀏覽(17)
  • Unity 用腳本獲取物體和組件(上)

    一個游戲物體是一個對象;沒有被掛到物體上的腳本,是一個未被實(shí)例化的類,暫時還不是具體的對象;當(dāng)腳本被掛到物體上后,就成了一個實(shí)實(shí)在在的對象。 腳本在執(zhí)行時,一般已經(jīng)掛到了某個對象上。因此在腳本代碼中,可以隨時訪問腳本目前掛到了那個對象上,直接用

    2024年02月16日
    瀏覽(34)
  • 7. unity腳本控制物體運(yùn)動(轉(zhuǎn)向、移動、旋轉(zhuǎn))

    1. 移動物體: 在界面中添加一個物體,并給這個物體添加一個腳本文件,在腳本文件當(dāng)中如果想控制物體運(yùn)動,就需要在 unity 每一幀更新的時候,給物體的坐標(biāo)值重新賦值,這樣就能按照幀更新速率實(shí)時的更改物體的位置,實(shí)現(xiàn)移動效果。 位置更新的代碼應(yīng)該寫在***update

    2023年04月12日
    瀏覽(42)
  • unity如何禁用物體上的其他腳本

    transform.GetComponent類名().enabled = false; 這種方法不太靠譜,可能禁用腳本后還會執(zhí)行,其他組件完全可以。 Destroy(transform.GetComponent類名()); 觸發(fā)后直接銷毀這個函數(shù)。 bool IsSucceed; 第一個腳本執(zhí)行完后,就用IsSucceed鎖死,不讓再執(zhí)行后面的操作。

    2023年04月10日
    瀏覽(26)
  • Unity 語法詳解之查找游戲物體的方法(含查找隱藏物體)

    Unity 語法詳解之查找游戲物體的方法(含查找隱藏物體)

    為了更好的看懂,有一個非?;A(chǔ)的知識,如果不知道可以移步去了解一下哦 unity | gameobject和transform的區(qū)別和關(guān)聯(lián)通俗解釋_gameobject transform_菌菌巧樂茲的博客-CSDN博客 一、前情提要 大寫的 GameObject是個類,里面寫滿了物體有關(guān)的代碼 小寫的 gameObject指的是物體本身 大寫的

    2024年02月12日
    瀏覽(22)
  • 編輯器腳本:Unity中如何查找哪些物體上有missing的腳本

    編輯器腳本:Unity中如何查找哪些物體上有missing的腳本

    編輯器中選中物體,判斷這些物體及子物體上是否有丟失的腳本 1、編輯器選中n個物體 2、獲取這n個物體及其它們的子物體,數(shù)據(jù)集記為A 3、A中全部物體判斷他們是否有null的腳本(MonoBehaviour) 4、判斷一個物體(obj)是否有空腳本的關(guān)鍵語句: obj.GetComponentsMonoBehaviour().Any(mon

    2024年02月14日
    瀏覽(25)
  • 「unity技巧」如何查找腳本掛載在哪個物體(組件)上?

    「unity技巧」如何查找腳本掛載在哪個物體(組件)上?

    目錄 一、簡單粗暴版方法 二、代碼方式 這是場景。 我們要找的腳本: 在Hierarchy窗口中輸入要找的 腳本名稱 。 結(jié)果出現(xiàn)。 若需要運(yùn)行中尋找掛載腳本的物體:

    2024年02月12日
    瀏覽(22)
  • 用于物體識別和跟蹤的下游任務(wù)自監(jiān)督學(xué)習(xí)-1-引言

    一:引言: 圖像和視頻理解是計算機(jī)視覺應(yīng)用中的基本問題,旨在使機(jī)器能夠像人類一樣解釋和理解視覺數(shù)據(jù)。這些問題涉及識別圖像和視頻中的對象、人物、動作、事件和場景。如圖1.1-(a)所示的圖像識別任務(wù)包括對象檢測[1]、實(shí)例[7]、語義[8]或全景分割[9],以定位對象

    2024年02月07日
    瀏覽(21)
  • Unity上接入手柄,手柄控制游戲物體移動

    Unity上接入手柄,手柄控制游戲物體移動

    1、unity軟件上安裝system input 組件。菜單欄【window】-【Packag Manager】打開如下界面,查找Input System,并且安裝。 2、安裝成功后插入手柄到windows上,打開菜單欄上【window】--【Analysis】--【Input Debuger】 進(jìn)入Input Debug界面,可以看到手柄設(shè)備能被Unity識別。 3、雙擊【XinputControllerW

    2024年04月15日
    瀏覽(27)
  • 【Unity】Transform—游戲物體的角度和旋轉(zhuǎn)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包