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

Unity 中实例化预制体的完整过程

在这里插入图片描述

1.资源加载(Load Asset to Memory)

  • Unity 的资源加载是指将各种资源(如模型、纹理、音频、预制体 等)从存储介质(如磁盘、AssetBundle、远程服务器)到运行时内存的过程,使其成为可用的资源(Asset),加载后的预制体是内存中的只读资源(Asset),无法直接修改

1.1直接引用

  • 在Inspector面板中直接将资源拖拽到脚本的公共变量上

    特点:
    简单易用:适合小型项目或固定资源
    静态加载:资源会被直接打包到场景或预制体中,无法动态加载
    内存占用:资源会随场景加载自动加载,可能导致内存浪费

1.2Resources文件夹

  • 将资源放在 Assets/Resources 文件夹中,通过 Resources.Load() 加载

    特点:
    动态加载:支持按需加载资源
    局限性:所有资源会打包到最终构建中,增大包体、不支持热更新

1.3AssetBundle

  • 将资源打包成独立的 .assetbundle 文件,支持动态下载和加载

    特点:
    灵活:支持热更新、按需加载、减小初始包体。
    复杂:需手动管理依赖、版本和内存卸载。
    内存管理:需调用 AssetBundle.Unload(true) 释放资源。

1.4Addressables

  • Unity官方推荐的资源管理系统,基于AssetBundle但更高级

    特点:
    自动化:自动处理依赖、打包和加载
    动态加载:支持本地和远程资源(如CDN)
    内存优化:提供缓存和引用计数管理

1.5Scene 加载

  • 通过 SceneManager.LoadScene 加载场景,场景内的资源会一并加载

    场景切换:使用 SceneManager 加载场景资源。

2.实例化(Instantiate GameObject)

  • 基于内存中的预制体资源(Asset),生成一个独立的、可操作的 GameObject 实例

2.1Prefab 和 Gameobject

📚️ Prefab : Prefab 是一个模板,用于保存一个或多个的Gameobject的完整结构和配置(包括组件、子物体、脚本参数),不直接存在于场景中,需要通过实例化具体生成对象, 在编辑器中直接拖拽Prefab到场景中(自动生成实例)

📚️ Gameobject: Gameobject是通过Prefab生成的具体对象,存在于场景中,仅存在于场景或运行时内存中,不会作为独立文件保存,若需保存到场景中,需手动拖拽到场景并保存场景文件

📚️ 实例化预制体:实例化预制体Instantiate方法其实就是一种序列化过程,Instantiate方法的内部首先将参数original所引用的游戏对象序列化,得到序列化流(序列化内容包括GameObject 的所有组件Component、属性值、子对象层级结构等),通过反序列化机制将序列化流生成新的Gameobject对象,确保了克隆对象与原始对象完全独立(深拷贝),为克隆对象生成新的实例 ID并且自动在对象名称后添加 “Clone” 标记


http://www.kler.cn/a/594545.html

相关文章:

  • 鲲鹏服务器,系统为:openEuler22.03-LTS (aarch64)Dify 安装教程(详细版)
  • Android第三次面试(网络篇补充)
  • 绿盟科技安全服务面试
  • 如何优化 React 应用性能?
  • 技术进阶:Open WebUI与Ollama的跨平台整合秘籍
  • CUDA编程基础
  • Qt 控件概述 QLabel
  • STM32——独立看门狗(IWDG)
  • 中电金信25/3/18面前笔试(需求分析岗+数据开发岗)
  • 关于运行 npm run serve/dev 运行不起来,node_modules Git忽略不了等(问题)
  • llama源码学习·model.py[3]ROPE旋转位置编码(3)源码中的广播机制
  • C++ 之多态 ------ C++面向对象三大特性之一【三大特性:封装、继承、多态】
  • WIFI p2p连接总结
  • MySQL 入门大全:查询语言分类
  • HTML 写一个计算器
  • 基于YOLOv8深度学习的智能小麦害虫检测识别系统
  • LabVIEW界面布局优化
  • Elasticsearch text字段检索方法
  • 使用Python SDK在亚马逊云科技上调用AI模型构建生成式AI应用
  • 【SpringMVC】SpringMVC拦截器,统一异常处理,文件上传与下载