国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

Unity3D 學(xué)習(xí)教程 13 C# 銷毀炮彈

2019-11-17 02:38:01
字體:
供稿:網(wǎng)友

Unity3D 學(xué)習(xí)教程 13 C# 銷毀炮彈

gameObject.renderer.enabled //是控制一個物體是否在屏幕上渲染或顯示 而物體實際還是存在的 只是想當(dāng)于隱身 而物體本身的碰撞體還依然存在的GameObject.Destroy() //表示移除物體或物體上的組件 代表銷毀該物體 實際上該物體的內(nèi)存并沒有立即釋放 而是在你下下個場景中槽釋放內(nèi)存資源,就是你a場景中Destroy了 一般是在c場景中才真正釋放該物體的內(nèi)存資源(這是我的體會 不知道理解錯誤沒)gameObject.active //是否在場景中停用該物體 在你gameObject.active =false中 則你在場景中用find找不到該物體 //如果該物體有子物體 你要用SetActiveRecursively(false) 來控制是否在場景中停用該物體(遞歸的)

我們要介紹是銷毀物體Destroy()

 1 using UnityEngine; 2 using System.Collections; 3  4 public class acc : MonoBehaviour { 5  6     // Use this for initialization 7     public Transform Q; 8     int speed=50; 9     void Start () {10 11     }12     13     // Update is called once per frame14     void Update () {15         float x = Input.GetAxis("Horizontal") * Time.deltaTime * speed;//左右移動16         float z = Input.GetAxis("Vertical") * Time.deltaTime * speed;//    前后移動17         //主攝像機物體    移動18         transform.Translate(x,0,z);19 20         if(Input.GetKeyDown(KeyCode.Mouse0))21         {22 23             //實列化子彈24             Transform n = Instantiate(Q) as Transform;25             //發(fā)射子彈的位置為物體的位置26             n.position = transform.position;27             28             Vector3 f = transform.TransformDirection(Vector3.forward);29             n.gameObject.rigidbody.AddForce(f*3000);30             Destroy(n.gameObject,5);31                                                       //Destroy(n.gameObject);32             //Destroy(gameObject);33         }34 35 36     }37 }

5秒后 銷毀物體

Destroy(n.gameObject,5);

立即銷毀物體

Destroy(n.gameObject);

如果文件綁定在物體上用

Destroy(gameObject);

來銷毀物體

Unity資源內(nèi)存申請和釋放

1.資源類型

GameObject, Transform, Mesh, Texture, Material, Shader, Script和各種其他Assets。

2.資源創(chuàng)建方式

  • 靜態(tài)引用,在腳本中加一個public GameObject變量,在Inspector面板中拖一個PRefab到該變量上,然后在需要引用的地方Instantiate;
  • Resource.Load,資源需要放在Assets/Resources目錄下;
  • AssetBundle.Load, Load之后Instantiate。

    3. 資源銷毀方式

  • GameObject.Destroy(gameObject),銷毀該物體;
  • AssetBundle.Unload(false),釋放AssetBundle文件內(nèi)存鏡像,不銷毀Load創(chuàng)建的Assets對象;
  • AssetBundle.Unload(true),釋放AssetBundle文件內(nèi)存鏡像同時銷毀所有已經(jīng)Load的Assets內(nèi)存鏡像;
  • Resources.UnloadAsset(Object),釋放已加載的Asset對象;
  • Resources.UnloadUnusedAssets,釋放所有沒有引用的Asset對象。

    4. 生命周期

    實驗篇

    實驗中創(chuàng)建了一個簡單場景,場景中創(chuàng)建了一個Empty GameObject,上面掛了一個腳本,在Awake函數(shù)中通過協(xié)程函數(shù)來創(chuàng)建資源,具體的Coroutine函數(shù)下面都有。 實驗中創(chuàng)建的Prefab是一個坦克車,加入場景中場景內(nèi)存增加3M左右,同時創(chuàng)建了一個AssetBundle資源供AssetBundle使用。

    1. Resources.Load方式加載一個Prefab, 然后Instantiate GameObject

    代碼如下:
   IEnumerator LoadResources()    {        // 清除干凈以免影響測試結(jié)果        Resources.UnloadUnusedAssets();        // 等待5秒以看到效果        yield return new WaitForSeconds(5.0f);        // 通過Resources.Load加載一個資源        GameObject tank = Resources.Load("Role/Tank") as GameObject;        yield return new WaitForSeconds(0.5f);        // Instantiate一個資源出來        GameObject tankInst = GameObject.Instantiate(tank, Vector3.zero, Quaternion.identity) as GameObject;        yield return new WaitForSeconds(0.5f);        // Destroy一個資源        GameObject.Destroy(tankInst);        yield return new WaitForSeconds(0.5f);        //釋放無用資源        tank = null;        Resources.UnloadUnusedAssets();        yield return new WaitForSeconds(0.5f);    }

執(zhí)行結(jié)果如下:

下面是統(tǒng)計結(jié)果:

<rp id="h419p"></rp>
<center id="h419p"><sup id="h419p"></sup></center>
數(shù)據(jù)描述MemoryTextureMeshMaterialGameObjectsObjects in SceneTotal Objects
初始72.8M1271/8.0M35/223.0K
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 莱芜市| 阿克| 息烽县| 大荔县| 和平县| 安龙县| 榆林市| 城固县| 德格县| 沅陵县| 西平县| 元谋县| 桂阳县| 湟中县| 梧州市| 新平| 郎溪县| 合水县| 余姚市| 乐都县| 万全县| 孙吴县| 北海市| 云龙县| 中山市| 宣恩县| 贺州市| 巴塘县| 班玛县| 芦山县| 梁平县| 凯里市| 卢湾区| 固原市| 大余县| 大新县| 布拖县| 潮安县| 奉新县| 大余县| 沧州市|

    <center id="h419p"></center>