赞
踩
目录
在Unity中,预制体(Prefab)是指一个包含了已经设置好的游戏对象及其组件的资源。通过创建预制体,你可以在项目中重复使用相同的游戏对象,而不必每次都重新创建和配置它们。预制体可以包含任何种类的游戏对象,例如角色、道具、场景元素等。在使用预制体时,你可以在场景中多次实例化它们,并且对它们进行修改、更新或替换,这将自动更新所有实例化的对象。
用预制菜类比,厨师加工预制菜的过程就是预制体实例化的过程,这里的厨师其实就是instantiate函数,通过函数将预制体实例化。厨师用预制菜制作出了一道成品菜,就是instantiate函数实例化了一个预制体,将该预制体呈现在场景中。
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
-
- public class Test : MonoBehaviour
- {
- //预制体是用GameObject类型
- public GameObject prefab;
-
- private void Start()
- {
- //使用Instantiate函数进行实例化,还可以初始化预制体的位置等
- Instantiate(prefab, new Vector3(0,0,0), Quaternion.identity);
- }
- }
(1)使用ManagerVars类统一管理prefab,声明prefab
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
-
- [CreateAssetMenu(menuName ="CreaterManagerVarsContainer")]
- public class ManagerVars : ScriptableObject
- {
- public static ManagerVars GetManagerVars()
- {
- return Resources.Load<ManagerVars>("ManagerVarsContainer");
- }
-
- //所有prefab和需要复用的组件、参数都在该类注册
- public GameObject prefab;
-
- }
(2)prefab初始化
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
-
- public class Test : MonoBehaviour
- {
- //无需声明多个prefab,只需声明管理类ManagerVars
- private ManagerVars vars;
-
- private void Start()
- {
- vars = ManagerVars.GetManagerVars();
-
- //直接在需要的地方实例化使用
- GameObject go = Instantiate(prefab);
- go.transform.position = new Vector3(0, -1.8f, 0);//实例化之后设置预制体的位置、旋转角度等
- }
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。