[請益] Unity讀取非Resource資料夾內檔案的問題

作者: doasgloria (青柳立夏)   2020-07-31 11:20:51
這篇的問題是從我上一篇問題衍伸來的 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 的方式另外載進來
作者: doasgloria (青柳立夏)   2020-07-31 14:53:00
驚 ! 竟然有unity本人回文XD 不過AB是甚麼啊~~Asset Database還什麼的嗎@@"
作者: CarpeDiemAL (CarpeDiemAL)   2020-07-31 15:18:00
asset bundle?
作者: doasgloria (青柳立夏)   2020-07-31 17:35:00
我用了asset bundle打包成檔案了 的確可以只是好奇 這個build bundle打包起來的檔案 我用txt開顯示亂碼而不是shader原始碼 所以該算是藏起來了吧~XD
作者: wix3000 (癢,好吃)   2020-07-31 17:56:00
我記得 Asset bundle 就是個壓縮檔而已 (茶
作者: doasgloria (青柳立夏)   2020-07-31 17:57:00
T_T
作者: cjcat2266 (CJ Cat)   2020-08-01 04:07:00
這招頂多在editor內有用,Unity沒有run time shader compiler
作者: kingroy (手殘總比腦殘好)   2020-08-01 08:03:00
Asset Bundle是壓縮檔沒錯,現在新的Addressable Assets多一點功能但難上手一點點shader沒有runtime compiler沒錯 但shader有放到本體裡打包就ok
作者: doasgloria (青柳立夏)   2020-08-02 01:01:00
那Asset Bundle 別人有辦法知道怎麼壓縮的然後解壓縮出原本的檔案嗎 ?? 我記得打包的時候有很多壓縮方法可以選吧~~
作者: newyellow (newyellow)   2020-08-04 02:19:00
剛隨手 google 了一下 看起來 asset bundle 應該可加密
作者: doasgloria (青柳立夏)   2020-08-05 09:49:00
我自己goo一下 好像是它本身就有加密功能 只是可能透過系統讀取的時候 用一些方法額外讀取 就是看Load時候用了Unity什麼API 造成讀取時的安全性

Links booklink

Contact Us: admin [ a t ] ucptt.com