• Unity技术手册 - 创建物体有几种方式?


    往期文章分享

    👉关于作者

    众所周知,人生是一个漫长的流程,不断克服困难,不断反思前进的过程。在这个过程中会产生很多对于人生的质疑和思考,于是我决定将自己的思考,经验和故事全部分享出来,以此寻找共鸣 !!!
    专注于Android/Unity和各种游戏开发技巧,以及各种资源分享(网站、工具、素材、源码、游戏等)
    有什么需要欢迎私我,交流群让学习不再孤单

    在这里插入图片描述

    本文约3千字,新手阅读需要6分钟,复习需要2分钟收藏随时查阅不再迷路

    👉实践过程

    今天小空带大家学习Unity创建游戏物体的常用几种方式。一定要牢记。

    😜构造方法

    直接使用new的形式来创建一个的空仅带有Transform的GameObject。

    参数为创建的游戏物体的名字叫什么。

    void Start()
    {
        GameObject testOne = new GameObject();
        GameObject testTwo = new GameObject("修仙");
        //可以添加组件
        testOne.AddComponent();
        testTwo.AddComponent();
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    在这里插入图片描述

    从图中可以看出,现将脚本挂载在一个物体上,然后运行就会在当前场景创建两个物体,并且可以随时给物体添加其他组件。停止运行后物体会自动销毁。

    😜Instance

    我相信也是常用的方法,有时候在开发的时候,可以有个类专门都是各种各样的物体指向,然后其他地方直接引用,就像Java里面的静态一样。这样避免了在不同的脚本指向不同的物体因遗忘导致的混乱。

    一共有物种创建方式:

    public class Test : MonoBehaviour
    {
        //外面指向的一个物体
        public GameObject prefab;
        public GameObject prefabFather;
        void Start()
        {
            if (prefab==null||prefabFather==null)
            {
                throw new NoNullAllowedException("对象不可为空");
            }
            GameObject testOne = new GameObject();
            GameObject testTwo = new GameObject("修仙");
            //可以添加组件
            testOne.AddComponent();
            testTwo.AddComponent();
            GameObject.Instantiate(prefab); //实例化对象
            GameObject.Instantiate(prefab, prefabFather.transform); //创建的时候指定父亲
            GameObject.Instantiate(prefab, prefabFather.transform, false); //分配父亲的时候是否保持原始的世界位置,false不保留,true保留
            GameObject.Instantiate(prefab, prefabFather.transform.position,
                Quaternion.identity); //Quaternion.identity -对象与世界轴或父轴完美对齐(无旋转)
            GameObject.Instantiate(prefab, prefabFather.transform.position, Quaternion.identity, prefabFather.transform); //创建对象的同时指定父亲
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    😜系统CreatePrimitive

    创建系统内置的基础物体,比如Cube(正方体),Plane(平面),Sphere(球体)。

    GameObject.CreatePrimitive() 传递的是PrimitiveType里的枚举。

    GameObject.CreatePrimitive(PrimitiveType.Cube); //创建个正方体
    GameObject.CreatePrimitive(PrimitiveType.Sphere); //创建个球体
    GameObject.CreatePrimitive(PrimitiveType.Capsule); //创建个胶囊
    GameObject.CreatePrimitive(PrimitiveType.Cylinder); //创建个圆柱体
    GameObject.CreatePrimitive(PrimitiveType.Plane); //创建个占用内存大的平面
    GameObject.CreatePrimitive(PrimitiveType.Quad); //创建个占用内存小的平面
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    👉其他

    📢作者:小空和小芝中的小空
    📢转载说明-务必注明来源:https://zhima.blog.csdn.net/
    📢这位道友请留步☁️,我观你气度不凡,谈吐间隐隐有王者霸气💚,日后定有一番大作为📝!!!旁边有点赞👍收藏🌟今日传你,点了吧,未来你成功☀️,我分文不取,若不成功⚡️,也好回来找我。

    温馨提示点击下方卡片获取更多意想不到的资源。
    空名先生

  • 相关阅读:
    Failed to connect to github.com port 443:connection timed out
    KubeGems容器云平台体验
    Golang洗牌算法(Golang乱序算法)
    一文读懂Linux I/O_同步(阻塞、非阻塞、多路复用)、异步
    【Java】基于微服务架构的智慧工地监管云平台源码带APP
    Spring5应用之事务处理
    【Flink源码篇】Flink提交流程之有效配置和程序的封装
    DBSCAN聚类算法实用案例
    分布式训练 最小化部署docker swarm + docker-compose落地方案
    Linux第一个小程序——进度条
  • 原文地址:https://blog.csdn.net/qq_27489007/article/details/126849247