예제 #1
0
        public Shader(AssetPreloadData preloadData) : base(preloadData)
        {
            if (sourceFile.version[0] == 5 && sourceFile.version[1] >= 5 || sourceFile.version[0] > 5) //5.5.0 and up
            {
                var str = preloadData.Dump();
                m_Script = Encoding.UTF8.GetBytes(str ?? "Serialized Shader can't be read");
            }
            else
            {
                m_Script = reader.ReadBytes(reader.ReadInt32());
                if (sourceFile.version[0] == 5 && sourceFile.version[1] >= 3) //5.3 - 5.4
                {
                    reader.AlignStream(4);
                    var m_PathName        = reader.ReadAlignedString();
                    var decompressedSize  = reader.ReadUInt32();
                    var m_SubProgramBlob  = reader.ReadBytes(reader.ReadInt32());
                    var decompressedBytes = new byte[decompressedSize];
                    using (var decoder = new Lz4DecoderStream(new MemoryStream(m_SubProgramBlob)))
                    {
                        decoder.Read(decompressedBytes, 0, (int)decompressedSize);
                    }

                    m_Script = m_Script.Concat(decompressedBytes.ToArray()).ToArray();
                }
            }
        }
예제 #2
0
        public static void WriteMonoText(AssetPreloadData asset, string exportFullPath)
        {
            string str;

            if (asset.serializedType?.m_Nodes != null)
            {
                str = asset.Dump();
            }
            else
            {
                str = Studio.GetScriptString(asset);
            }
            File.WriteAllText(exportFullPath, str);
        }
예제 #3
0
        public static bool ExportMonoBehaviour(AssetPreloadData asset, string exportPath)
        {
            var exportFullName = exportPath + asset.Text + ".txt";

            if (ExportFileExists(exportFullName))
            {
                return(false);
            }
            var    m_MonoBehaviour = new MonoBehaviour(asset);
            string str;

            if (asset.serializedType.m_Nodes != null)
            {
                str = asset.Dump();
            }
            else
            {
                str = Studio.GetScriptString(asset);
            }
            File.WriteAllText(exportFullName, str);
            return(true);
        }