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

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.dtcms.com/a/80268.html

相关文章:

  • 第7章 类与面向对象
  • linux性能监控的分布式集群 prometheus + grafana 监控体系搭建
  • 华为终端销售模式转型变革项目总体汇报方案(183页PPT)(文末有下载方式)
  • WordPress漏洞
  • 【Vue3】01-vue3的基础 + ref reactive
  • 大白话详细解读函数之柯里化
  • AI全天候智能助手,为您构建私人数据库
  • JVM的组成--运行时数据区
  • Vue的根路径为什么不能作为跳板跳转到其他页面
  • 潮流霓虹酸性渐变液体流体扭曲颗粒边缘模糊JPG背景图片设计素材 Organic Textures Gradients Collection
  • 如何提高自动化测试的覆盖率?
  • C++的多态性及其实现方式
  • conda 常用命令
  • 提升模型性能:数据增强与调优实战
  • 微信小程序:用户拒绝小程序获取当前位置后的处理办法
  • RabbitMQ的高级特性介绍(一)
  • 05_Z-Stack无线点灯
  • LeetCode hot 100—数组中的第K个最大元素
  • 【OpenGauss源码学习 —— (SortGroup算子)】
  • 蓝桥杯备考:数学问题模运算---》次大值
  • dfs(十八)98. 验证二叉搜索树
  • Linux 驱动开发笔记--1.驱动开发的引入
  • 海康ISAPI协议在智联视频超融合平台中的接入方法
  • CIR-Net:用于 RGB-D 显著性目标检测的跨模态交互与优化(问题)
  • 蓝桥杯十四届C++B组真题题解
  • DeDeCMS靶场获取wenshell攻略
  • 【B站电磁场】Transformer
  • 【QT5 多线程示例】互斥锁
  • QWen 和 DeepSeek 入门指南
  • 天梯赛 L2-012 关于堆的判断