Unity 的 WebGL 构建中资源图片访问方式
在 Unity 的 WebGL 构建中,资源图片是可以打包在 工程内部 使用的,前提是这些资源被正确地包含在构建中,并且能够通过合适的方式加载和访问。不同于传统的本地文件访问,WebGL 需要通过 Asset Bundles、Addressables 或 Resources 文件夹等方式来加载和管理资源。
资源加载的关键点
WebGL 不支持直接从本地文件系统加载资源,所有资源必须作为项目的一部分打包在构建中。
资源必须通过 Unity 的资源加载系统(如 Resources 文件夹或 Addressables 系统)来加载。
为了优化加载时间和性能,最好使用 Unity 的 资源打包机制,例如 Addressables 或 Asset Bundles。
如何在 WebGL 中使用工程内部的图片资源
1. 使用 Resources 文件夹
Resources 文件夹是 Unity 中的一个特殊文件夹,任何放在该文件夹中的资源都会被打包到最终的构建中,并且可以在运行时使用 Resources.Load 来加载。
操作步骤:
1. 创建 Resources 文件夹:在 Unity 项目中的 Assets 文件夹下创建一个名为 Resources 的文件夹。
2. 放置资源:将你的图片文件(如 .png、.jpg 等)放入 Resources 文件夹中。
3. 加载资源:通过 Resources.Load 来动态加载资源。
例如:
csharp
// 加载资源文件夹中的纹理
Texture2D texture = Resources.Load<Texture2D>("Textures/myImage");
这样,Unity 会自动将 myImage 放入构建的 WebGL 文件中,并且在运行时从 WebGL 构建包中加载该纹理。
注意事项:
使用 Resources 会将资源直接嵌入到构建中,但需要管理好资源的大小,因为所有放入 Resources 文件夹的资源都会被打包进最终的 WebGL 构建包,这可能导致构建包体积过大。
在 WebGL 中,加载资源时需要特别注意文件大小和加载时间,特别是在网络环境下。
2. 使用 Addressables
Addressables 是 Unity 的一项资源管理系统,能够更精细地控制资源的加载和卸载,特别是在 WebGL 中,对于资源的按需加载非常有用。
操作步骤:
1. 安装 Addressables:首先需要在 Unity 中安装 Addressables 包(可以通过 Unity Package Manager 安装)。
2. 标记资源为 Addressable:将你的资源(例如图片)标记为 Addressable,这样 Unity 会为该资源创建一个地址。
3. 通过地址加载资源:使用 Addressables.LoadAssetAsync 异步加载资源。例如:
csharp
using UnityEngine;
using UnityEngine.AddressableAssets;
using UnityEngine.ResourceManagement.AsyncOperations;// 加载 Addressable 资源
void Start() {Addressables.LoadAssetAsync<Texture2D>("myImageAddress").Completed += handle => {if (handle.Status == AsyncOperationStatus.Succeeded) {Texture2D texture = handle.Result;// 使用加载的纹理}};
}
注意事项:
Addressables 系统适合需要按需加载的情况,尤其是较大的游戏和资源。
资源不会被直接打包在构建包中,而是以异步方式在需要时加载,可以优化 WebGL 构建的初始加载时间。
3. 使用 Asset Bundles
Asset Bundles 是 Unity 提供的另一种资源打包和加载的方式。通过 Asset Bundles,你可以将纹理、模型、音频等资源打包到外部文件中,并在运行时加载。
操作步骤:
1. 创建 Asset Bundle:通过 Unity 的 Asset Bundle 打包工具,将资源(如纹理)打包成外部文件。
2. 在 WebGL 中加载 Asset Bundle:将这些 Asset Bundles 文件放到服务器上,或者在本地加载。
3. 加载资源:通过 Unity 的 AssetBundle.LoadAsset 方法加载资源。
例如:
csharp
// 加载 Asset Bundle 中的资源
AssetBundle myLoadedAssetBundle = AssetBundle.LoadFromFile("myAssetBundle");
Texture2D texture = myLoadedAssetBundle.LoadAsset<Texture2D>("myImage");
注意事项:
Asset Bundles 通常适用于需要大量资源并且希望按需下载资源的情况。比如,WebGL 游戏可能将较大的资源(如纹理)打包为 Asset Bundles,并在运行时从服务器或本地加载。
需要管理好 Asset Bundles 的版本控制和更新。
4. WebGL 和图片资源
在 WebGL 环境下,图片资源必须通过 Unity 的资源管理系统来加载,不能直接通过文件路径加载,因为 WebGL 是在浏览器中运行的,浏览器的安全策略限制了对本地文件系统的访问。因此,所有图片资源必须嵌入到构建包中或者通过服务器提供的 URL 动态加载。
总结
WebGL 构建 中的资源(包括图片)可以和其他平台一样存储在 Resources 文件夹、通过 Addressables 或 Asset Bundles 加载。
使用 Resources.Load、Addressables 或 Asset Bundles 是将图片嵌入 WebGL 构建并在运行时加载的常见方法。
在 WebGL 中,避免使用硬编码的本地文件路径。所有资源必须通过 Unity 的加载系统来访问,以便能够在 WebGL 环境中运行。
相关文章:
Unity 的 WebGL 构建中资源图片访问方式
在 Unity 的 WebGL 构建中,资源图片是可以打包在 工程内部 使用的,前提是这些资源被正确地包含在构建中,并且能够通过合适的方式加载和访问。不同于传统的本地文件访问,WebGL 需要通过 Asset Bundles、Addressables 或 Resources …...
WinForms 中使用 MVVM 模式构建应用:实现登录页面、页面导航及 SQLite 数据库连接完整框架搭建过程
前言 在传统的 WinForms 应用程序开发中,很多开发者使用事件驱动的设计模式,直接将业务逻辑编写在界面代码中。然而,随着应用程序的复杂性增加,单一的界面文件变得臃肿,难以测试和维护。借鉴 WPF 中 MVVM(…...
Chrome调试工具(查看CSS属性)
来说说这个Chrome调试工具吧,梦回gdb,但是它没有gdb难 打开浏览器 有两种方式可以直接打开Chrome调试工具 直接按F12 鼠标右键页面 --- 检查元素 什么mc玩家是鸣潮 标签页含义 🤒 elements查看标签结构(展示html文件&#…...
MQTT从入门到精通之MQTT入门
MQTT入门 1 MQTT概述 1.1 MQTT简介 MQTT(Message Queuing Telemetry Transport)由IBM于1999年开发的一种基于**"发布订阅模式"的轻量级的消息传输协议**! 发布订阅模式是一种传统的客户端-服务器架构的替代方案,因为…...
Hadoop生态系统主要包括哪些组件以及它们的作用
Hadoop生态系统是一个开源的大数据处理框架,它主要由一系列组件构成,每个组件都承担着不同的功能和作用。以下是Hadoop生态系统的主要组件及其作用的详细解释: HDFS(Hadoop Distributed File System) 作用:…...
OpenResty 1.27.1.1 已经正式发布
OpenResty 1.27.1.1 已经正式发布,这是一个基于 NGINX 和 LuaJIT 的 web 平台。以下是关于此次发布的一些重点信息和更新内容: 下载与安装 你可以在此处下载最新版本的 OpenResty。提供了便携式源代码分发、Win32/Win64 二进制分发以及为 Ubuntu、Debi…...
定高虚拟列表:让大数据渲染变得轻松
定高虚拟列表 基本认识 在数据如潮水般涌来的今天,如何高效地展示和管理这些数据成为了开发者们面临的一大挑战,传统的列表渲染方式在处理大量数据时,往往会导致页面卡顿、滚动不流畅等问题,严重影响用户体验(在页面…...
python request与grequests该如何选择
requests & grequests requests 和 grequests 是Python中用于发送HTTP请求的不同库。requests 是一个同步、阻塞式库,而 grequests 是基于 requests 封装的异步非阻塞库,它利用了 gevent 库提供的协程机制,能够并发发送多个请求。 选择…...
Unity3D UI 拖拽
Unity3D 实现 UI 元素拖拽功能。 UI 拖拽 通常画布上的 UI 元素都是固定位置的,我们可以通过实现拖拽接口,让 UI 元素可以被拖拽到其他位置。 拖拽接口 创建一个脚本 UIDrag.cs,在默认继承的 MonoBehaviour 后面,再继承三个接…...
介绍一下memcpy(c基础)
memcpy函数void *memcpy(void *dest, const void *src, size_t n); dest:指向目标内存区域的指针,即复制的目的地。src:指向源内存区域的指针,即要被复制的内容的来源。n:要复制的字节数 主要功能是将src所指向的内存…...
【网络面试篇】HTTP(2)(笔记)——http、https、http1.1、http2.0
目录 一、相关面试题 1. HTTP 与 HTTPS 有哪些区别? 2. HTTPS 的工作原理?(https 是怎么建立连接的) (1)ClientHello (2)SeverHello (3)客户端回应 &a…...
python-23-一篇文章帮你理解Python推导式
python-23-一篇文章帮你理解Python推导式 一.简介 在 Python 中,推导式(Comprehensions)是一个简洁的语法,用于通过某种可迭代对象快速生成新的对象(如列表、字典、集合等!来开始我们今天的日拱一卒&…...
WPF中如何简单的使用CommunityToolkit.Mvvm创建一个项目并进行 增删改查
目录 开始前准备的数据库dbblog如下: 第一步:创建项目后下载四个NuGet程序包 第二步:删除原本的MainWindow.XAML文件 并创建如下的目录结构 然后在View文件夹下面创建Login.XAML和Main.XAML 并且在App.XAML中将启动项改为Login.X…...
CesiumJS 案例 P15:检测标记、鼠标点击移动标记、鼠标拖动标记
CesiumJS CesiumJS API:https://cesium.com/learn/cesiumjs/ref-doc/index.html CesiumJS 是一个开源的 JavaScript 库,它用于在网页中创建和控制 3D 地球仪(地图) 一、检测标记 <!DOCTYPE html> <html lang"en&…...
Webserver(4.9)本地套接字的通信
目录 本地套接字 本地套接字 TCP\UDP实现不同主机、网络通信 本地套接字实现本地的进程间的通信,类似的,一般采用TCP的通信流程 生成套接字文件 #include<arpa/inet.h> #include<stdio.h> #include<stdlib.h> #include<unistd.h&…...
[IAA系列] Image Aesthetic Assessment
Preface 本文旨在记录个人结合AI工具对IAA这个领域的一些了解,主要是通过论文阅读的方式加深对领域的了解。有什么问题,欢迎在评论区提出并讨论。 什么是IAA Image Aesthetic Assessment(图像美学评估)是一种评估图像在视觉上的…...
基于springboot的高校科研管理系统(源码+调试+LW)
项目描述 临近学期结束,还是毕业设计,你还在做java程序网络编程,期末作业,老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据你想解决的问题,今天给…...
Flutter环境配置
配置环境变量 PUB_HOSTED_URLhttps://pub.flutter-io.cn FLUTTER_STORAGE_BASE_URLhttps://storage.flutter-io.cn 这个命令是用来配置 Flutter 的镜像源地址,主要是为了解决在中国大陆地区访问 Flutter 官方资源较慢的问题 具体的操作做如下: 右键点击"此…...
Rip动态路由及Rip动态路由优化
动态路由Rip Tip:Rip动态路由实现多个路由间不同网段通信。 本次实验目的,通过给ar1,ar2,ar3配置rip动态路由,实现pc1 ping通 pc2。 AR1配置如下: <Huawei>sy Enter system view, return user view with CtrlZ. [Huawei]…...
双路快速排序和三路排序算法
双路快速排序 一、概念及其介绍 双路快速排序算法是随机化快速排序的改进版本,partition 过程使用两个索引值(i、j)用来遍历数组,将 <v 的元素放在索引i所指向位置的左边,而将 >v 的元素放在索引j所指向位置的…...
挑战杯推荐项目
“人工智能”创意赛 - 智能艺术创作助手:借助大模型技术,开发能根据用户输入的主题、风格等要求,生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用,帮助艺术家和创意爱好者激发创意、提高创作效率。 - 个性化梦境…...
多模态2025:技术路线“神仙打架”,视频生成冲上云霄
文|魏琳华 编|王一粟 一场大会,聚集了中国多模态大模型的“半壁江山”。 智源大会2025为期两天的论坛中,汇集了学界、创业公司和大厂等三方的热门选手,关于多模态的集中讨论达到了前所未有的热度。其中,…...
智慧医疗能源事业线深度画像分析(上)
引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...
椭圆曲线密码学(ECC)
一、ECC算法概述 椭圆曲线密码学(Elliptic Curve Cryptography)是基于椭圆曲线数学理论的公钥密码系统,由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA,ECC在相同安全强度下密钥更短(256位ECC ≈ 3072位RSA…...
相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了: 这一篇我们开始讲: 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下: 一、场景操作步骤 操作步…...
java 实现excel文件转pdf | 无水印 | 无限制
文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...
ArcGIS Pro制作水平横向图例+多级标注
今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作:ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等(ArcGIS出图图例8大技巧),那这次我们看看ArcGIS Pro如何更加快捷的操作。…...
力扣-35.搜索插入位置
题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...
网站指纹识别
网站指纹识别 网站的最基本组成:服务器(操作系统)、中间件(web容器)、脚本语言、数据厍 为什么要了解这些?举个例子:发现了一个文件读取漏洞,我们需要读/etc/passwd,如…...
在Mathematica中实现Newton-Raphson迭代的收敛时间算法(一般三次多项式)
考察一般的三次多项式,以r为参数: p[z_, r_] : z^3 (r - 1) z - r; roots[r_] : z /. Solve[p[z, r] 0, z]; 此多项式的根为: 尽管看起来这个多项式是特殊的,其实一般的三次多项式都是可以通过线性变换化为这个形式…...
