iis服务器助手广告
返回顶部
首页 > 资讯 > 后端开发 > Python >unity3d 资源打包加密
  • 209
分享到

unity3d 资源打包加密

资源unity3d 2023-01-31 04:01:44 209人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

资源打包脚本,放到Assets\Editor 文件夹下using UnityEngine;using System.Collections;using UnityEditor;using System.IO;public class ass

资源打包脚本,放到Assets\Editor 文件夹下

using UnityEngine;

using System.Collections;

using UnityEditor;

using System.IO;


public class assetPack : Editor

{

[MenuItem("Custom Editor/Save Scene2")]

static void ExportResource()

{

// Bring up save panel

string path = EditorUtility.SaveFilePanel("Save Resource", "", "New Resource", "unity3D");

if (path.Length != 0)

{

// Build the resource file from the active selection.

Object[] selection = Selection.GetFiltered(typeof(Object), SelectionMode.DeepAssets);

BuildPipeline.BuildAssetBundle(Selection.activeObject, selection, path,

                              BuildAssetBundleOptions.CollectDependencies | BuildAssetBundleOptions.CompleteAssets);

Selection.objects = selection;

}

}

[MenuItem("Custom Editor/Make unity3d file to bytes file")]

static void ExportResourceNoTrackSS()

{

Object[] selection = Selection.GetFiltered(typeof(Object), SelectionMode.DeepAssets);

foreach(Object obj in selection)

{

string path1 = AssetDatabase.GetAssetPath(obj);

FileStream fs = new FileStream(path1, FileMode.Open, FileAccess.ReadWrite);

byte[] buff = new byte[fs.Length];

fs.Read(buff, 0, (int)fs.Length);

string passWord = "llh";

packXor(buff, buff.Length, password);

Debug.Log("filelength:" + buff.Length);

fs.Close();

string BinPath = path1.Substring(0, path1.LastIndexOf('.')) + ".bytes";

FileStream cfs = new FileStream(BinPath, FileMode.Create);

cfs.Write(buff, 0, buff.Length);

Debug.Log("filelength:" + buff.Length);

buff = null;

cfs.Close();

}

}

static void packXor(byte[] _data, int _len, string _pstr)

{

int length = _len;

int strCount = 0;

for (int i = 0; i < length; ++i)

{

if (strCount >= _pstr.Length)

strCount = 0;

_data[i] ^= (byte)_pstr[strCount++];

}

}

}

菜单上就会出现两个子菜单, 把要打包的资源做成Prefab,选中资源,然后菜单Custom Editor/Save Scene2  输入名字新生成的文件,再选中新生成的文件,点击菜单Custom Editor/Make unity3d file to bytes file   输入名字

又生成了一个文件,再点击这个文件,菜单Custom Editor/Save Scene2  ,这样就打包加密好了

即打包AssetBundle之后加密再重新打包AssetBundle(能否直接加密打包?显然是不行的,加载资源时,LoadBundle会通过解密之后的字节重新创建AssetBundle,所以必须先打包出AssetBundle)


加载打包资源

using UnityEngine;

using System.Collections;


public class loadnew : MonoBehaviour

{

public string filename = "My Resource";

private string BundleURL;

private string AssetName;

void Start()

{

//StartCoroutine(loadScenee());

StartCoroutine(LoadResource());

}

IEnumerator loadScenee()

{

string path;

path = "file://" + Application.dataPath + "/" + filename + ".unity3d";

Debug.Log(path);

WWW www = new WWW(path);

yield return www;

AssetBundle bundle = www.assetBundle;

//GameObject Go = bundle.Load("GCube",typeof(GameObject)) as GameObject;

GameObject Objscene = Instantiate(www.assetBundle.mainAsset) as GameObject;

bundle.Unload(false);

}

IEnumerator LoadResource()

{

BundleURL = "file://" + Application.dataPath + "/" + filename + ".unity3d";

Debug.Log("path:" + BundleURL);

WWW m_Download = new WWW(BundleURL);

yield return m_Download;

if (m_Download.error != null)

{

//   Debug.LogError(m_Download.error);

Debug.LogError("Warning errow: " + "NewScene");

yield break;

}

TextAsset txt = m_Download.assetBundle.Load(filename, typeof(TextAsset)) as TextAsset;

byte[] data = txt.bytes;

byte[] decryptedData = Decryption(data);

Debug.Log("decryptedData length:" + decryptedData.Length);

StartCoroutine(LoadBundle(decryptedData));

}

IEnumerator LoadBundle(byte[] decryptedData)

{

AssetBundleCreateRequest acr = AssetBundle.CreateFromMemory(decryptedData);

yield return acr;

AssetBundle bundle = acr.assetBundle;

GameObject obj =  (GameObject)Instantiate(bundle.mainAsset);

//obj.SetActive (true);

}

byte[] Decryption(byte[] data)

{

byte[] tmp = new byte[data.Length];

for (int i = 0; i < data.Length; i++)

{

tmp[i] = data[i];

}

//   shanghaichaolan

string password ="llh";

packXor(tmp,tmp.Length,password);

return tmp;

}

static void packXor(byte[] _data, int _len, string _pstr)

{

int length = _len;

int strCount = 0;

for (int i = 0; i < length; ++i)

{

if (strCount >= _pstr.Length)

strCount = 0;

_data[i] ^= (byte)_pstr[strCount++];

}

}

void update()

{

}

}



--结束END--

本文标题: unity3d 资源打包加密

本文链接: https://www.lsjlt.com/news/187942.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • unity3d 资源打包加密
    资源打包脚本,放到Assets\Editor 文件夹下using UnityEngine;using System.Collections;using UnityEditor;using System.IO;public class ass...
    99+
    2023-01-31
    资源 unity3d
  • Unity3d热更新(二):资源打包As
    创建AssetBundle1.新建一个cube,将其拉倒Project视图里创建预设。2.在Assets目录下创建Scenes文件夹,创建场景scene1.unity。3.新建ExportAssetBundles.cs,保存在Assets/...
    99+
    2023-01-31
    资源 Unity3d
  • Unity3D DLL加密
    Unity3D打包android应用程序时,如果不对DLL加密,很容易被反编译,导致代码的泄露。通常的做法是通过加密DLL或者对代码进行混淆。本文的所要探讨的是通过加密的方式来对DLL进行保护,并详细记录加密的操作过程。主要参考    雨松...
    99+
    2023-01-31
    Unity3D DLL
  • Vue如何使用cdn加载资源加快打包速度
    目录为什么使用CDN解决方法使用CDN主要解决两个问题具体步骤资源引入打包对比附:vue项目常用的cdn地址总结为什么使用CDN Vue项目打包的时候,默认会把所有代码合并生产新文件...
    99+
    2024-04-02
  • webpack如何打包less或sass资源
    这篇文章主要讲解了“webpack如何打包less或sass资源”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“webpack如何打包less或sass资源”...
    99+
    2024-04-02
  • 打包非 JavaScript 静态资源详情
    目录1、打包工具中的自定义导入2、浏览器和打包工具中通用的导入语法3、模棱两可的相对URL4、工具链中的支持4.1 打包工具5、 WebAssembly5.1 &...
    99+
    2024-04-02
  • webpack中如何压缩打包html资源
    本篇内容主要讲解“webpack中如何压缩打包html资源”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“webpack中如何压缩打包html资源”吧!为什么需要...
    99+
    2024-04-02
  • ASP.NETCoreWeb资源打包与压缩技术介绍
    概述 在ASP.Net中可以使用打包与压缩这两种技术来提高Web应用程序页面加载的性能。通过减少从服务器请求的次数和减少资源文件的体积来提高加载性能。 打包是一地将多个文件(CSS,...
    99+
    2024-04-02
  • Vite图片资源打包优化的实现
    目录步骤1: 安装依赖步骤2: 配置Vite步骤3: 加载图片步骤4: 查看优化结果总结Vite是一种现代化的前端构建工具,它的打包速度非常快。在使用Vite进行开发的过程中,图片资...
    99+
    2023-05-15
    Vite图片资源打包优化 Vite图片打包优化 Vite打包优化
  • Unity3D 代码加密保护工具
    加密方式对于Unity3D的保护方式,主要是通过Virbox Protector Standalone对Unity3D程序的整个生成目录进行加密,可以保护Unity的主要代码逻辑不被反编译,最大程度保护软件开发商的合法权益,同时DSProt...
    99+
    2023-01-31
    代码 工具 Unity3D
  • java怎么加载jar包内资源文件
    Java加载jar包内的资源文件可以通过以下两种方式实现: 使用Class.getResource()方法: URL url =...
    99+
    2023-10-30
    java jar
  • Unity3D加密保护解决方案
    精锐5加密锁支持Unity3D代码及资源保护,并提供授权方案产品简介可使用Virbox Protector加壳工具对Unity3D代码进行加密。Unity3D使用开源mono C#语法,代码会编译到Assembly-CSharp.dll。可...
    99+
    2023-01-31
    解决方案 Unity3D
  • Vite图片资源打包优化怎么实现
    这篇文章主要讲解了“Vite图片资源打包优化怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Vite图片资源打包优化怎么实现”吧!Vite是一种现代化的前端构建工具,它的打包速度非常快...
    99+
    2023-07-06
  • Unity3d发布android项目,打包apk包流程(unity2021.3.10)
    一、确保已正确安装SDK 1、如下图,在安装版本设置里,点击添加模块。如果没有添加模块,证明你安装路径不是目前版本的安装路径,先去设置回来。 2、框选Android Build Suppor...
    99+
    2023-09-03
    android unity c# Powered by 金山文档
  • 【Unity3D】存档文件加密代码
    存档文件, 被修改起来现在变的很容易了, 为了解决这个问题,请用下面的代码,修改playerPrefs.cs 1.替换 fileReader = new StreamReader(fileName); serializedInput =...
    99+
    2023-01-31
    文件加密 代码 Unity3D
  • python加密打包程序详解
    目录python加密打包程序补充:Python实现文件简单加解密一、基础知识二、加解密算法1.导入运行库2.定义生成密钥函数3.定义加解密单元4.加密文件5.解密文件三、测试pyth...
    99+
    2023-05-15
    python加密打包 python文件加解密
  • AS3资源加载器
    最近鼓捣除了一个加载器。可以分布式地加载文本文件以及SWF文件。本人将它写成了一个Flex库。本着共同进步的目的,我将其分享出来。测试结果 :控制台:测试资源:关于 Flash(SWF)美术资源的介绍:关于测试的核心代码 :package ...
    99+
    2023-01-31
    加载 资源
  • 关于vue打包时的publicPath就是打包后静态资源的路径问题
    情况一 当不配置vue.config.js或者没有publicPath属性时,默认访问的静态路径是服务器的根目录 服务器根目录下没有js文件夹所以访问失败,把dist下的js,...
    99+
    2024-04-02
  • Go1.16新特性embed打包静态资源文件实现
    目录背景embed 嵌入字符串、字节切片、文件嵌入嵌入文件嵌入文件夹嵌入匹配FS 文件系统总结:背景 相信有一部分人喜爱 GO 的初衷大概是:跨平台静态编译,如果在没用通过 CGO ...
    99+
    2024-04-02
  • vue-cli4如何打包静态资源到指定目录
    目录打包静态资源到指定目录解决vue-cli打包访问静态资源404打包静态资源到指定目录 在最近开发工作中,我打包的 dist 文件夹下,vue-cli4 打包(npm run bu...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作