zoukankan      html  css  js  c++  java
  • Prefabs(预设)与 Instantiate(实例化)

      Prefabs在unity3d中用的比较多,怎么理解这个东西呢?我把它当作是一个在代码未运行就创建好的一个物体,我们可以在代码里重复引用它,这样相当于实现了物体的多用(与我们写代码的重用很相识哟)。

      首先新创建一个预设 (注意颜色是灰色的)

      然后我新建一个物体

    将Cube物体拖到刚才新建的预设上,结果如图:

    预设变成了蓝色了,我们把创建的物体删掉。

    然后新建一个C#脚本。写入下面代码

    
    
     public GameObject obj; //传入的预设
    
        // Use this for initialization
        void Start () {
            //参数一:是预设 参数二:实例化预设的坐标  参数三:实例化预设的旋转角度
            GameObject instance = (GameObject)Instantiate(obj, transform.position, transform.rotation);
            //这里 transform.position,transform.rotation分别代表的是相机和坐标和 旋转角度
        }
        
        // Update is called once per frame
        void Update () {
           
        }
    
    
    
     

    把该脚本添加到相机上面,上面的脚本需要传入一个GameObject,其实这个就是我们新建的预设,把它拖入脚本的参数里面就可以了。

     

    点击运行后,就会生成一个Cubeprefab的预设的立方体。

    还有一种方式,在代码里用Resource.Load()来加载实例化预设,前提是预设预提必须放在Assets/Resources的目录下。当然你也可以在 Assets/Resources/MyPrefabs。

    代码:

        // Use this for initialization
        void Start () {
            //参数一:是预设 参数二:实例化预设的坐标  参数三:实例化预设的旋转角度
            GameObject instance = (GameObject)Instantiate(Resources.Load("Cubeprefab"), transform.position, transform.rotation);
            //这里 transform.position,transform.rotation分别代表的是相机和坐标和 旋转角度
        }
        
        // Update is called once per frame
        void Update () {
           
        }

     后面这种方式比较灵活运用。比如我在玩一个游戏的时候,我想退出游戏,服务器或本地的数据文件其实就存入了当前角色的坐标和一些其他信息,当下次登录游戏的时候,就直接从服务或本地数据文件读取这些信息并使用预设来实例化物体,然后呈现在我们眼前。

  • 相关阅读:
    自学Linux Shell2.1-进入shell命令行
    自学Linux Shell1.3-Linux文件系统
    自学Linux Shell1.2-Linux目录结构
    自学Linux Shell1.1-Linux初识
    03 自学Aruba之2.4GHz及5GHz无线信道
    02 自学Aruba之无线频段---ISM频段及UNII频段
    01 自学Aruba之功率单位和相对单位
    1.Zabbix报错信息:It probably means that the systems requires more physical memory.
    自学Aruba5.3.4-Aruba安全认证-有PEFNG 许可证环境的认证配置802.1x
    自学Aruba5.3.3-Aruba安全认证-有PEFNG 许可证环境的认证配置Captive-Portal
  • 原文地址:https://www.cnblogs.com/cindyOne/p/3041416.html
Copyright © 2011-2022 走看看