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

【Unity3D】AB包加密(AssetBundle加密)

加密前:

加密后,直接无法加载ab,所以无法正常看到ab内容。

using UnityEngine;
using UnityEditor;
using System.IO;
public static class AssetBundleDemoTest
{[MenuItem("Tools/打包!")]public static void Build(){//注意:StreamingAssets文件夹需手动创建//参数:打包路径(Assets/StreamingAssets文件夹)、打包方式、打包平台(运行平台)BuildPipeline.BuildAssetBundles(Application.streamingAssetsPath, BuildAssetBundleOptions.ChunkBasedCompression,EditorUserBuildSettings.activeBuildTarget);//刷新编辑器AssetDatabase.Refresh();}[MenuItem("Tools/加密AB")]public static void EncryptAB(){string[] filePaths = Directory.GetFiles(Application.dataPath + "/StreamingAssets");foreach (string filePath in filePaths){byte[] bytes = File.ReadAllBytes(filePath);byte[] newBytes = new byte[bytes.Length + 8];for (int i = 0; i < bytes.Length; i++){newBytes[8 + i] = bytes[i];}File.WriteAllBytes(filePath, newBytes);}}
}

测试代码如下,加载名为"prefab_ab"的AB包,并加载名为"Cube"的资源,是一个预制体。

关于资源加载详情:【Unity】资源加载方式大全_streamingassets manifest-CSDN博客

利用public static AssetBundle LoadFromFile(string path, uint crc, ulong offset);API从磁盘加载AB包,其中crc填0,代表没有任何CRC校验,offset填加密所使用的偏移量8(你可以改,但一定和加密时偏移量一样。) 

using System.Collections.Generic;
using UnityEngine;public class AssetBundleTest : MonoBehaviour
{Dictionary<string, GameObject> resourcesDict = new Dictionary<string, GameObject>();void Start(){GameObject goPrefab = LoadResourceByResourceNameFromAb("prefab_ab", "Cube");if (goPrefab != null){GameObject go = GameObject.Instantiate(goPrefab);}}private GameObject LoadResourceByResourceNameFromAb(string abName, string resourceName){if (!resourcesDict.ContainsKey(abName + "|" + resourceName)){//加载ab包 本地加载方式 一个名为apple的ab包文件AssetBundle assetBundle = AssetBundle.LoadFromFile(Application.streamingAssetsPath + "/" + abName, 0, 8);if (assetBundle != null){//加载源资源时先加载依赖资源//1.加载位于StreamingAssets目录下的StreamingAssets包AssetBundle streamingAssetsBundle = AssetBundle.LoadFromFile(Application.streamingAssetsPath + "/StreamingAssets", 0, 8);if (streamingAssetsBundle == null){Debug.Log("streamingAssetsBundle is not exist!");return null;}//加载StreamingAssets包下的AssetBundleManifest文件(可打开StreamingAssets.manifest文件看第三行的名字就是它)AssetBundleManifest assetBundleManifest = streamingAssetsBundle.LoadAsset<AssetBundleManifest>("AssetBundleManifest");//获取abName包的全部依赖名称!即StreamingAssets.manifest文件的指定Info为abName的Dependencies的数组内容string[] deps = assetBundleManifest.GetAllDependencies(abName);//加载abName包的全部依赖资源for (int i = 0; i < deps.Length; i++){//Debug.Log("依赖资源名称" + deps[i]);//因为依赖名称是一个相对路径,例如:StreamingAssets下的pp文件夹的m2资源是写为 pp/m2,所以加载是没问题AssetBundle.LoadFromFile(Application.streamingAssetsPath + "/" + deps[i], 0, 8);}//加载源资源GameObject go = assetBundle.LoadAsset<GameObject>(resourceName);if (go != null){resourcesDict.Add(abName + "|" + resourceName, go);return go;}else{Debug.LogWarning("abNmae:" + abName + ",resourceName:" + resourceName + " is not exist!");return null;}}else{Debug.LogWarning("abNmae:" + abName + " is not exist!");return null;}}else{GameObject go = null;resourcesDict.TryGetValue(abName + "|" + resourceName, out go);return go;}}
}

相关文章:

【Unity3D】AB包加密(AssetBundle加密)

加密前&#xff1a; 加密后&#xff0c;直接无法加载ab&#xff0c;所以无法正常看到ab内容。 using UnityEngine; using UnityEditor; using System.IO; public static class AssetBundleDemoTest {[MenuItem("Tools/打包!")]public static void Build(){//注意:St…...

【FTP 协议】FTP主动模式

一、测试工具 服务器&#xff1a;FileZilla_Server-cn-0_9_60_2.exe 中文版本 客户端&#xff1a;FileZilla_3.66.5_win64 客户端IP: 192.168.9.186 服务端 IP: 192.168.9.161 在客户端请求PORT之前&#xff0c;抓包测试的结果跟被动模式流程相同。 二、客户端主动模式命令…...

十五、Vue 响应接口

文章目录 一、响应式系统基础什么是响应式系统响应式数据的声明与使用二、响应式原理深入Object.defineProperty () 方法的应用(Vue2)Proxy 对象的应用(Vue3)三、响应式接口之 ref 和 reactive(Vue3)ref 函数的使用reactive 函数的使用四、计算属性(computed)作为响应式…...

至强6搭配美光CZ122,证明CXL可以提高生成式AI的性能表现

最近发现了英特尔官网公布的一项最新测试报告&#xff0c;报告显示&#xff0c;将美光的CZ122 CXL内存模块放到英特尔至强6平台上&#xff0c;显著提升了HPC和AI工作负载的内存带宽&#xff0c;特别是在采用基于软件的交错配置&#xff08;interleave configuration&#xff09…...

一文理解ssh,ssl协议以及应用

在使用基于密钥的认证方式的时候&#xff0c;私钥的位置一定要符合远程服务器规定的位置&#xff0c;否则找不到私钥的位置会导致建立ssh连接失败 SSH 全称是 “Secure Shell”&#xff0c;即安全外壳协议。 它是一种网络协议&#xff0c;用于在不安全的网络中安全地进行远程登…...

电子应用设计方案87:智能AI收纳箱系统设计

智能 AI 收纳箱系统设计 一、引言 智能 AI 收纳箱系统旨在为用户提供更高效、便捷和智能的物品收纳与管理解决方案&#xff0c;通过融合人工智能技术和创新设计&#xff0c;提升用户的生活品质和物品整理效率。 二、系统概述 1. 系统目标 - 实现物品的自动分类和整理&#xf…...

BloombergGPT: A Large Language Model for Finance——面向金融领域的大语言模型

这篇文章介绍了BloombergGPT&#xff0c;一个专门为金融领域设计的大语言模型&#xff08;LLM&#xff09;。以下是文章的主要内容总结&#xff1a; 背景与动机&#xff1a; 大语言模型&#xff08;如GPT-3&#xff09;在多个任务上表现出色&#xff0c;但尚未有针对金融领域的…...

LeetCode - #180 Swift 实现连续数字查询

文章目录 摘要描述SQL 解法Swift 题解代码Swift 题解代码分析核心逻辑关键函数 示例测试及结果测试 1测试 2 时间复杂度空间复杂度总结 摘要 本文将解决如何从日志数据中找出连续出现至少三次的数字。通过 SQL 查询语句结合 Swift 数据库操作&#xff0c;我们将完成这一任务。…...

为什么ip属地一会河南一会江苏

在使用互联网的过程中&#xff0c;许多用户可能会遇到这样一个问题&#xff1a;自己的IP属地一会儿显示为河南&#xff0c;一会儿又变成了江苏。这种现象可能会让人感到困惑&#xff0c;甚至产生疑虑&#xff0c;担心自己的网络活动是否受到了某种影响。为了解答这一疑问&#…...

使用最广泛的FastAPI项目结构推荐,命名规范等

使用最广泛的FastAPI项目结构推荐&#xff0c;命名规范等 一、FastAPI项目结构如下&#xff1a;二、组件管理&#xff1a;使用依赖注入三、命名约定四、建议分层架构的设计五、文档和测试六、版本控制和持续集成七、环境和配置管理工具八、性能优化与权限安全 一、FastAPI项目结…...

[大模型开源]SecGPT 网络安全大模型

模型介绍 SecGPT的愿景是将人工智能技术引入网络安全领域&#xff0c;以提高网络防御的效率和效果。其使命是推动网络安全智能化&#xff0c;为社会提供更安全的数字生活环境。 ① SecGPT开源地址&#xff1a;https://github.com/Clouditera/secgpt② 模型地址&#xff1a;htt…...

android 启动页倒计时页面编写

一、需求和技术 1、实现5,4,3,2,1启动页倒计时 2、倒计时实现使用CountDownTimer 二、activity代码 public class OpenActivity extends AppCompatActivity {private Button in;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanc…...

nuxt3路由及路由拦截

配置 nuxt3没有专门的路由配置文件&#xff0c;是由文件目录自动生成路由 ssr nuxt3会默认所有页面都是服务端渲染&#xff0c;如果需要设置某个页面不走服务端渲染&#xff0c;可以在nuxt.config.js中单独配置 routeRules: {/home: { ssr: false },/spa/**: { ssr: false …...

git版本管理

安装 打开 使用codeup 连接本地仓库和云仓库 找到本地存放代码的位置 单击右键打开git bash 初始化本地库 设置用户签名 显示隐藏文件夹之后才能看到,git文件夹 把这个复制下来 粘贴到bash中 拉取远程仓库的master分支: git pull origin master master分支提交和 dev 分支开…...

382M 雨晨 19045.5247 Win10PE 网络版

文件: YC10PE2025.iso&#xff08;全内置网络版&#xff09; 大小: 401473536 字节 修改时间: 2025年1月7日, 星期二, 18 : 40 : 50 MD5: 49E923DCEF86183A908F2D2C9BF07A23 SHA1: 56DF40393DEA9F73733B2A5693658A01F7A2F6C5 CRC32: 3A87F179 https://www.123684.com/s/zEbRVv-…...

在二维数组中列优先存放是怎么进行的

在二维数组中&#xff0c;列优先存放&#xff08;Column-major order&#xff09;是一种存储方式&#xff0c;其中数组的列元素在内存中是连续存放的。这意味着&#xff0c;对于一个二维数组 A[m][n]&#xff0c;其中 m 是行数&#xff0c;n 是列数&#xff0c;数组的第一列的所…...

Unity【Colliders碰撞器】和【Rigibody刚体】的应用——小球反弹效果

目录 Collider 2D 定义&#xff1a; 类型&#xff1a; Rigidbody 2D 定义&#xff1a; 属性和行为&#xff1a; 运动控制&#xff1a; 碰撞检测&#xff1a; 结合使用 实用检测 延伸拓展 1、在Unity中优化Collider 2D和Rigidbody 2D的性能 2、Unity中Collider 2D…...

CES 2025:ROG打造极致游戏体验

2025年1月7日晚&#xff0c;备受瞩目的CES 2025 ROG新品发布会在万众期待中拉开帷幕。 作为全球领先的电竞和游戏设备制造商&#xff0c;ROG在此次发布会上隆重推出了多款旗舰级新品&#xff0c;包括旗舰专业电竞本ROG枪神9超竞系列、专业电竞本ROG枪神9系列、旗舰游戏本ROG魔霸…...

英伟达 RTX 5090 显卡赋能医疗大模型:变革、挑战与展望

一、英伟达 RTX 5090 与 RTX 4090 技术参数对比 1.1 核心架构与制程工艺 在探讨英伟达 RTX 4090 与 RTX 5090 的差异时&#xff0c;核心架构与制程工艺无疑是最为关键的基础要素&#xff0c;它们从根本上决定了两款显卡的性能上限与应用潜力。 1.1.1 核心架构差异 RTX 4090…...

Windows 11 上配置VSCode 使用 Git 和 SSH 完整步骤

在 Windows 11 上&#xff0c;通过 VSCode 使用 Git 和 SSH 克隆 GitHub 仓库的完整优化步骤如下&#xff1a; 1. 安装必备工具 下载并安装 Git&#xff1a; 访问 Git 官网 下载最新版本。安装时&#xff0c;选择以下选项&#xff1a; Default editor for Git: Use Visual Stud…...

Qwen2.5-32B-Instruct YOLOv5集成:智能视觉检测系统

Qwen2.5-32B-Instruct YOLOv5集成&#xff1a;智能视觉检测系统 1. 引言 想象一下&#xff0c;你正在开发一个智能监控系统&#xff0c;需要实时检测画面中的人员、车辆和异常行为。传统方案可能需要分别部署目标检测模型和逻辑判断模块&#xff0c;中间还要处理各种数据格式…...

Swin2SR入门到精通:从图片上传到高清保存完整流程

Swin2SR入门到精通&#xff1a;从图片上传到高清保存完整流程 1. 认识Swin2SR图像增强技术 Swin2SR是一种基于Swin Transformer架构的先进图像超分辨率技术&#xff0c;它能将低质量图片智能放大4倍&#xff0c;同时保持出色的细节质量。与传统的双线性插值等简单放大方法不同…...

Unity Timeline实战:如何用TrackAsset和PlayableBehaviour实现片段跳转循环

Unity Timeline实战&#xff1a;用TrackAsset与PlayableBehaviour构建智能跳转系统 在游戏开发中&#xff0c;过场动画的时间轴控制往往需要更精细的操作。Unity Timeline虽然提供了基础的时间轴编辑功能&#xff0c;但当遇到需要根据游戏状态动态调整播放进度时&#xff0c;原…...

如何用PDF Arranger轻松管理PDF文档:终极免费工具指南

如何用PDF Arranger轻松管理PDF文档&#xff1a;终极免费工具指南 【免费下载链接】pdfarranger Small python-gtk application, which helps the user to merge or split PDF documents and rotate, crop and rearrange their pages using an interactive and intuitive graph…...

漏洞扫描器:常见漏洞模式的自动化检测

漏洞扫描器&#xff1a;常见漏洞模式的自动化检测 在当今数字化时代&#xff0c;网络安全问题日益突出&#xff0c;企业和个人面临着来自黑客、恶意软件等各类威胁。漏洞扫描器作为一种自动化工具&#xff0c;能够高效检测系统中存在的常见漏洞模式&#xff0c;帮助用户提前发…...

Arduino nRF5x低功耗库:深度解析SYSTEM_OFF与CONSTANT_LATENCY模式

1. 项目概述 Arduino nRF5x_lowPower 是专为 Nordic Semiconductor nRF5x 系列 SoC&#xff08;如 nRF52832、nRF52840、nRF51822&#xff09;设计的 Arduino 兼容低功耗管理库。它并非简单封装睡眠函数&#xff0c;而是深度对接 nRF5x 片上电源管理单元&#xff08;PMU&…...

AI原生软件技术选型到底怎么选?:一张动态决策树图谱,覆盖LLM接入、向量基建、Agent编排与合规审计4大生死关

第一章&#xff1a;AI原生软件技术选型的底层逻辑与决策范式 2026奇点智能技术大会(https://ml-summit.org) AI原生软件并非传统应用叠加模型API的简单拼接&#xff0c;而是以模型为一等公民、数据流为骨架、推理生命周期为驱动内核的全新构造范式。其技术选型本质是权衡“表达…...

从领域驱动到本体论:AI 时代的架构方法论变了对

从0构建WAV文件&#xff1a;读懂计算机文件的本质 虽然接触计算机有一段时间了&#xff0c;但是我的视野一直局限于一个较小的范围之内&#xff0c;往往只能看到于算法竞赛相关的内容&#xff0c;计算机各种文件在我看来十分复杂&#xff0c;认为构建他们并能达到目的是一件困难…...

Keil5项目模块化实战:将STM32标准外设驱动打包成GCC编译的.a静态库

Keil5项目模块化实战&#xff1a;将STM32标准外设驱动打包成GCC编译的.a静态库 在嵌入式开发中&#xff0c;随着项目规模扩大和复杂度提升&#xff0c;代码复用和模块化管理变得尤为重要。将常用的外设驱动&#xff08;如GPIO、USART等&#xff09;编译成静态库&#xff08;.a文…...

Windows环境下利用vcpkg高效部署CGAL的完整指南

1. Windows环境下vcpkg与CGAL的完美邂逅 第一次在Windows上折腾CGAL的时候&#xff0c;我差点被各种依赖关系搞崩溃。直到发现了vcpkg这个神器&#xff0c;整个安装过程变得异常简单。vcpkg是微软开源的C包管理工具&#xff0c;它能自动处理库的下载、编译和依赖关系&#xff0…...