当前位置: 首页 > news >正文

Unity 生成物体的几种方式

系列文章目录

unity工具


文章目录

  • 系列文章目录
  • 前言
  • 👉一、直接new的方式创建生成
    • 1-1.代码如下
    • 1-2. 效果图
  • 👉二、使用Instantiate创建生成(GameObject)
    • 2-1.代码如下
    • 2-2.效果如下图
  • 👉三.系统CreatePrimitive创建生成
    • 3-1代码如下
    • 3-2.效果如下图
  • 👉四、使用Instantiate创建生成(Transform)
    • 4-1.代码如下
    • 4-2.效果图
  • 👉五、使用组件创建生成
  • 👉六、壁纸分享
  • 👉总结


前言

大家好,我是心疼你的一切,不定时更新Unity开发技巧,觉得有用记得一键三连哦。
在软件开发的时候,可能会遇到程序的物体生成,虽然比较简单,但还是小记录一下,如有需要可以看两眼


👉一、直接new的方式创建生成

1-1.代码如下

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class Clone_1 : MonoBehaviour
{// Start is called before the first frame updatevoid Start(){GameObject gameObject = new GameObject();GameObject gameObject1 = new GameObject("物体名字");}}

1-2. 效果图

在这里插入图片描述
从效果图可以看出,场景一运行就会生成两个物体,一个有名字一个没有名字,停止之后物体会自动销毁,生成物体的时候还可以添加其他组件(如碰撞盒…)

👉二、使用Instantiate创建生成(GameObject)

2-1.代码如下

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class Clone_2 : MonoBehaviour
{public GameObject prefab1;public GameObject prefabFather;  // Start is called before the first frame updatevoid Start(){Instantiate(prefab1);  //直接生成物体Instantiate(prefab1, prefabFather.transform);  //  生成物体的时候给物体设置父物体//生成物体并设置父物体的时候是否保持原始的世界位置  false不保留 true保留Instantiate(prefab1, prefabFather.transform,false);//Quaternion.identity  对象与世界轴或父轴完美对齐(没有旋转)Instantiate(prefab1, prefabFather.transform.position,Quaternion.identity);//Quaternion.identity  对象与世界轴或父轴完美对齐(没有旋转)同时设置父物体Instantiate(prefab1, prefabFather.transform.position,Quaternion.identity, prefabFather.transform);}// Update is called once per framevoid Update(){}
}

2-2.效果如下图

在这里插入图片描述
在这里插入图片描述

👉三.系统CreatePrimitive创建生成

创建系统内置的基础物体,比如Cube(正方体),Plane(平面),Sphere(球体),胶囊体,
球体,圆柱体。
有时候不知道为什么,测试用的时候总是忘记系统生成的api这次就写一次,嘻嘻

3-1代码如下

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class Clone_3 : MonoBehaviour
{// Start is called before the first frame updatevoid Start(){//生成正方体GameObject.CreatePrimitive(PrimitiveType.Cube);//生成球体GameObject.CreatePrimitive(PrimitiveType.Sphere);//生成胶囊体GameObject.CreatePrimitive(PrimitiveType.Capsule);//生成圆柱体GameObject.CreatePrimitive(PrimitiveType.Cylinder);//生成占用内存大的平面GameObject.CreatePrimitive(PrimitiveType.Plane);//生成占用内存小的平面GameObject.CreatePrimitive(PrimitiveType.Quad);}}

3-2.效果如下图

在这里插入图片描述

👉四、使用Instantiate创建生成(Transform)

不管是Transform还是GameObject都是可以用Instantiate的因为他们两个都是继承的是Object

4-1.代码如下

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class Clone_4 : MonoBehaviour
{public Transform prefab;public Transform fatherTransform;// Start is called before the first frame updatevoid Start(){//用法和Clone_2脚本里面的一样,这里就不多介绍了Transform tran = Instantiate(prefab);Transform tran1 = Instantiate(prefab,fatherTransform);Transform tran2 = Instantiate(prefab,fatherTransform,false);Transform tran3 = Instantiate(prefab,fatherTransform.position,Quaternion.identity ,fatherTransform);}
}

4-2.效果图

在这里插入图片描述

👉五、使用组件创建生成

1.新建一个脚本组件CubePrefab.cs挂载到生成的cube上面,制作成预制体
2.预制体效果如下
在这里插入图片描述
3.编辑刚刚创建的脚本,新增一个bool属性(isbool)
4.新增完之后的预制体效果图,就会多出一个勾选框
在这里插入图片描述
这时候就可以实例化了
5.代码如下
cubePrefab拖刚刚制作的预制体就ok了

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class Clone_5 : MonoBehaviour
{public CubePrefab cubePrefab;// Start is called before the first frame updatevoid Start(){for (int i = 0; i < 5; i++){CubePrefab obj = Instantiate(cubePrefab);obj.isbool = true;}}}

6.效果图如下
在这里插入图片描述
全选这几个cube你就会发现上面的bool属性全是勾选状态,测试结束
其他需要请自行扩展

👉六、壁纸分享

请添加图片描述
请添加图片描述

👉总结

以上就是讲了几种创建生成的方法,
不定时更新Unity开发技巧,觉得有用记得一键三连哦。感谢

相关文章:

  • C数据结构:二叉树
  • 信号量和事件及队列补充
  • Linux-Web服务搭建面试题-1
  • esp32 idf开发中的常用命令
  • 网络故障排除-OSPF故障
  • 电脑找不到opencl.dll原因分析及5种详细的解决方法
  • 重生之 SpringBoot3 入门保姆级学习(02、打包部署)
  • 通关!游戏设计之道Day16
  • BFS解决最短路问题(详解)
  • C#控制台-输出输入、占位符
  • CSS基础(第二天)
  • 大模型日报2024-05-27
  • 算法训练营day41
  • 【学习笔记】计算机组成原理(七)
  • 10.SpringBoot 统一处理功能
  • IE9 : DOM Exception: INVALID_CHARACTER_ERR (5)
  • 【每日笔记】【Go学习笔记】2019-01-10 codis proxy处理流程
  • 5分钟即可掌握的前端高效利器:JavaScript 策略模式
  • Angular Elements 及其运作原理
  • co模块的前端实现
  • JavaScript-Array类型
  • JavaScript新鲜事·第5期
  • js递归,无限分级树形折叠菜单
  • Js基础知识(四) - js运行原理与机制
  • js中的正则表达式入门
  • Linux CTF 逆向入门
  • Linux下的乱码问题
  • PAT A1120
  • Shell编程
  • Spark in action on Kubernetes - Playground搭建与架构浅析
  • SpriteKit 技巧之添加背景图片
  • 多线程 start 和 run 方法到底有什么区别?
  • 分享一个自己写的基于canvas的原生js图片爆炸插件
  • 基于MaxCompute打造轻盈的人人车移动端数据平台
  • 原生js练习题---第五课
  • # Pytorch 中可以直接调用的Loss Functions总结:
  • # 日期待t_最值得等的SUV奥迪Q9:空间比MPV还大,或搭4.0T,香
  • (10)STL算法之搜索(二) 二分查找
  • (2)Java 简介
  • (4)事件处理——(7)简单事件(Simple events)
  • (C语言)二分查找 超详细
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第5节(封闭类和Final方法)
  • (差分)胡桃爱原石
  • (二)什么是Vite——Vite 和 Webpack 区别(冷启动)
  • (过滤器)Filter和(监听器)listener
  • (五)c52学习之旅-静态数码管
  • (转载)Linux 多线程条件变量同步
  • (转载)微软数据挖掘算法:Microsoft 时序算法(5)
  • .[hudsonL@cock.li].mkp勒索病毒数据怎么处理|数据解密恢复
  • .equals()到底是什么意思?
  • .net core 3.0 linux,.NET Core 3.0 的新增功能
  • .NET Entity FrameWork 总结 ,在项目中用处个人感觉不大。适合初级用用,不涉及到与数据库通信。
  • .net refrector
  • .Net Web窗口页属性
  • .NET 的静态构造函数是否线程安全?答案是肯定的!