Unity3D:创建对象
轉(zhuǎn)自:
http://blog.csdn.net/zooen2011/article/details/12694739
比如有以下場(chǎng)景,飛機(jī)發(fā)射子彈,這個(gè)子彈就是被創(chuàng)建的對(duì)象
C#程序中創(chuàng)建對(duì)象
習(xí)慣C#的都知道,我們使用一個(gè)new就可以創(chuàng)建一個(gè)類、結(jié)構(gòu),稱之為對(duì)象。
Hero hero=new Hero();
U3D中創(chuàng)建對(duì)象
創(chuàng)建對(duì)象是要用靜態(tài)函數(shù)
?publicstatic Object Instantiate(Object original,Vector3position,Quaternionrotation);
第一個(gè)參數(shù):要?jiǎng)?chuàng)建的對(duì)象,第二個(gè)參數(shù):要?jiǎng)?chuàng)建的對(duì)象的坐標(biāo),第三個(gè)參數(shù):
-----------------------------------------------------------------------------------------------
實(shí)際應(yīng)用中,子彈是被大量創(chuàng)建的,因此需要將子彈對(duì)象創(chuàng)建一個(gè)Prefabs(預(yù)設(shè)、我理解為克隆體、影子),而不用重新創(chuàng)建一個(gè)新的子彈對(duì)象,節(jié)省系統(tǒng)資源
下面展示一個(gè)玩家控制的飛機(jī)發(fā)射子彈的控制代碼:
Hero.cs
void Start () {?//省略部分代碼?}
void Update () {
?//省略部分代碼
?CreateRocket();
?}
publicTransform obj_rocket;//子彈已經(jīng)通過預(yù)設(shè)創(chuàng)建好了,將其聯(lián)到主角,從Project視圖拖拽綁定到游戲主角腳本
void CreateRocket()
??? {
??? ??//創(chuàng)建子彈的時(shí)間間隔
???????????r_shootInterval -=Time.deltaTime;
??????????? if (r_shootInterval<=0)
???????????{
???????????????r_shootInterval = 0.3f;
?//按下空格鍵或鼠標(biāo)左鍵
???????????????if (Input.GetKey(KeyCode.Space) ||Input.GetMouseButtonDown(0))
???????????????{
???????????????????//子彈是從主角身上發(fā)出的,所以借用主角目前的坐標(biāo)位置
???????????????????Instantiate(obj_rocket,m_transform.position,m_transform.rotation);
???????????????}
???? ???????}
??? }
轉(zhuǎn)載于:https://my.oschina.net/liangzhenghui/blog/186655
總結(jié)
以上是生活随笔為你收集整理的Unity3D:创建对象的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 考研复习安排——第一阶段末
- 下一篇: Unity3d Time的使用