当前位置:   article > 正文

Unity基础知识笔记(一)——预制体(Prefab)及其组件_unity预制体

unity预制体

Unity快速入门教程-详解预制体(Prefab)及其实例化Instantiate_unity instantiate-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/m0_53680210/article/details/126791644?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522170988531916800185874753%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=170988531916800185874753&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-1-126791644-null-null.142%5Ev99%5Epc_search_result_base4&utm_term=%E9%A2%84%E5%88%B6%E4%BD%93&spm=1018.2226.3001.4187

目录

一、什么是预制体

二、预制体的实例化

1.常规声明、实例化

2.管理性更强的声明、实例化


一、什么是预制体

Unity中,预制体(Prefab)是指一个包含了已经设置好的游戏对象及其组件的资源。通过创建预制体,你可以在项目中重复使用相同的游戏对象,而不必每次都重新创建和配置它们。预制体可以包含任何种类的游戏对象,例如角色、道具、场景元素等。在使用预制体时,你可以在场景中多次实例化它们,并且对它们进行修改、更新或替换,这将自动更新所有实例化的对象

用预制菜类比,厨师加工预制菜的过程就是预制体实例化的过程,这里的厨师其实就是instantiate函数,通过函数将预制体实例化。厨师用预制菜制作出了一道成品菜,就是instantiate函数实例化了一个预制体,将该预制体呈现在场景中。

二、预制体的实例化

1.常规声明、实例化

  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. public class Test : MonoBehaviour
  5. {
  6. //预制体是用GameObject类型
  7. public GameObject prefab;
  8. private void Start()
  9. {
  10. //使用Instantiate函数进行实例化,还可以初始化预制体的位置等
  11. Instantiate(prefab, new Vector3(0,0,0), Quaternion.identity);
  12. }
  13. }

2.管理性更强的声明、实例化

(1)使用ManagerVars类统一管理prefab,声明prefab

  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. [CreateAssetMenu(menuName ="CreaterManagerVarsContainer")]
  5. public class ManagerVars : ScriptableObject
  6. {
  7. public static ManagerVars GetManagerVars()
  8. {
  9. return Resources.Load<ManagerVars>("ManagerVarsContainer");
  10. }
  11. //所有prefab和需要复用的组件、参数都在该类注册
  12. public GameObject prefab;
  13. }

(2)prefab初始化

  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. public class Test : MonoBehaviour
  5. {
  6. //无需声明多个prefab,只需声明管理类ManagerVars
  7. private ManagerVars vars;
  8. private void Start()
  9. {
  10. vars = ManagerVars.GetManagerVars();
  11. //直接在需要的地方实例化使用
  12. GameObject go = Instantiate(prefab);
  13. go.transform.position = new Vector3(0, -1.8f, 0);//实例化之后设置预制体的位置、旋转角度等
  14. }
  15. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/756827
推荐阅读
相关标签
  

闽ICP备14008679号