这篇的问题是从我上一篇问题衍伸来的 XD
就是如何隐藏Compute Shader的问题
我想到一个方式是
将Shader内容的字串
在执行时写成 .txt 或 .compute 的档案
读进来后再删除掉
虽然不是像打包成dll那样 但是也是提高保护性
但是实作上遇到一些问题 我想应该跟Unity读取资源素材的机制有关Q_Q
我写出来的时候是这样:
string SavePath = Application.persistentDataPath + "MyShader.compute";
string ShaderContent = "Content_of_MyCS"; //这里有好多行shader的内容
StreamWriter writer = new StreamWriter(SavePath, true);
writer.WriterLine(ShaderContent);
writer.Close();
作者: Unity (Unity3D) 2020-07-31 14:32:00
我觉得你应该考虑看看用 AB 的方式另外载进来
惊 ! 竟然有unity本人回文XD 不过AB是什么啊~~Asset Database还什么的吗@@"
我用了asset bundle打包成档案了 的确可以只是好奇 这个build bundle打包起来的档案 我用txt开显示乱码而不是shader原始码 所以该算是藏起来了吧~XD
作者:
wix3000 (痒,好吃)
2020-07-31 17:56:00我记得 Asset bundle 就是个压缩档而已 (茶
这招顶多在editor内有用,Unity没有run time shader compiler
作者:
kingroy (手残总比脑残好)
2020-08-01 08:03:00Asset Bundle是压缩档没错,现在新的Addressable Assets多一点功能但难上手一点点shader没有runtime compiler没错 但shader有放到本体里打包就ok
那Asset Bundle 别人有办法知道怎么压缩的然后解压缩出原本的档案吗 ?? 我记得打包的时候有很多压缩方法可以选吧~~
作者:
newyellow (newyellow)
2020-08-04 02:19:00刚随手 google 了一下 看起来 asset bundle 应该可加密
我自己goo一下 好像是它本身就有加密功能 只是可能透过系统读取的时候 用一些方法额外读取 就是看Load时候用了Unity什么API 造成读取时的安全性