美文网首页
Unity Addressables加密

Unity Addressables加密

作者: ShawnWeasley | 来源:发表于2021-01-20 19:01 被阅读0次

    卧槽,今天一打开Package Manager我发现了什么?!!!


    image.png

    我的天呐,等了这么久终于出了!居然单独出了一个AddressablesCN用于加密,简直太贴心了。
    此处感动地留下了泪水,幸好项目还没发布,分分钟转过来。

    本贴就是感慨一下,顺带召唤小伙伴们,快去用AddressablesCN啊,简单易用,有了加密功能简直无懈可击~

    附带官方使用说明地址:https://ucgbucket.unitychina.cn/AssetStreaming/AddressablesCN.pdf

    这里简述一下使用方法:
    1.创建Group


    image.png

    2.如果要设置自己的密钥:在工程里新建一个脚本,脚本内容如下,命名你们随意,设置一下密钥,注意密钥需要16位,正常ASCII码均可,也就是普通数字大小写字母都行

    using System.IO;
    using System.Security.Cryptography;
    namespace UnityEngine.ResourceManagement.ResourceProviders
    {
        public class MyAESStreamProcessor : IDataConverter
        {
            byte[] Key
            {
                get
                {
                    return
    System.Text.Encoding.ASCII.GetBytes("ABCDEFGHIJKLMNOP");//修改此处密钥,需要16位,正常ASCII码均可
                }
            }
            SymmetricAlgorithm m_algorithm;
            SymmetricAlgorithm Algorithm
            {
                get
                {
                    if (m_algorithm == null)
                    {
                        m_algorithm = new AesManaged();
                        m_algorithm.Padding = PaddingMode.Zeros;
                        var initVector = new byte[m_algorithm.BlockSize / 8];
                        for (int i = 0; i < initVector.Length; i++)
                            initVector[i] = (byte)i;
                        m_algorithm.IV = initVector;
                        m_algorithm.Key = Key;
                        m_algorithm.Mode = CipherMode.ECB;
                    }
                    return m_algorithm;
                }
            }
    
            public Stream CreateReadStream(Stream input, string id)
            {
                return new CryptoStream(input,
                Algorithm.CreateDecryptor(Algorithm.Key, Algorithm.IV),
                CryptoStreamMode.Read);
            }
    
            public Stream CreateWriteStream(Stream input, string id)
            {
                return new CryptoStream(input,
                Algorithm.CreateEncryptor(Algorithm.Key, Algorithm.IV),
                CryptoStreamMode.Write);
            }
        }
    }
    

    3.Group上的高级设置选一下加密方式


    image.png

    用起来真简单,给AddressablesCN点赞~


    在实际项目使用中发现他会报错,然后加载半天后Addressables报空物体,排查了一下,发现所有的Group都得选同一个加密方式,尤其是默认的Group别忘了选~


    2020.1.29更新
    好吧我又回来了,我收回以上的赞扬。
    实际使用的时候发现AddressablesCN会在启动程序的时候卡顿很久,造成了大量的GC


    image.png

    默默换回了Addressables。。。

    相关文章

      网友评论

          本文标题:Unity Addressables加密

          本文链接:https://www.haomeiwen.com/subject/gatlzktx.html