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

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.常规声明、实例化

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);
    }
}

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

(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);//实例化之后设置预制体的位置、旋转角度等
    }
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

差点意思的鸭鸭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值