mirror of
https://github.com/aelurum/AssetStudio.git
synced 2025-05-25 05:40:21 -04:00
- improve export MonoBehaviour
- remove some code
This commit is contained in:
parent
4899d6d7d0
commit
dc5691aefc
@ -289,65 +289,106 @@ namespace Unity_Studio
|
||||
if (baseDefinitions)
|
||||
{
|
||||
#region cmmon string array
|
||||
string[] baseStrings = new string[1007];
|
||||
string[] baseStrings = new string[1016];
|
||||
baseStrings[0] = "AABB";
|
||||
baseStrings[5] = "AnimationClip";
|
||||
baseStrings[19] = "AnimationCurve";
|
||||
baseStrings[34] = "AnimationState";
|
||||
baseStrings[49] = "Array";
|
||||
baseStrings[55] = "Base";
|
||||
baseStrings[60] = "BitField";
|
||||
baseStrings[69] = "bitset";
|
||||
baseStrings[76] = "bool";
|
||||
baseStrings[81] = "char";
|
||||
baseStrings[86] = "ColorRGBA";
|
||||
baseStrings[96] = "Component";
|
||||
baseStrings[106] = "data";
|
||||
baseStrings[111] = "deque";
|
||||
baseStrings[117] = "double";
|
||||
baseStrings[124] = "dynamic_array";
|
||||
baseStrings[138] = "FastPropertyName";
|
||||
baseStrings[155] = "first";
|
||||
baseStrings[161] = "float";
|
||||
baseStrings[167] = "Font";
|
||||
baseStrings[172] = "GameObject";
|
||||
baseStrings[183] = "Generic Mono";
|
||||
baseStrings[196] = "GradientNEW";
|
||||
baseStrings[208] = "GUID";
|
||||
baseStrings[213] = "GUIStyle";
|
||||
baseStrings[222] = "int";
|
||||
baseStrings[226] = "list";
|
||||
baseStrings[231] = "long long";
|
||||
baseStrings[241] = "map";
|
||||
baseStrings[245] = "Matrix4x4f";
|
||||
baseStrings[262] = "NavMeshSettings";
|
||||
baseStrings[256] = "MdFour";
|
||||
baseStrings[263] = "MonoBehaviour";
|
||||
baseStrings[277] = "MonoScript";
|
||||
baseStrings[288] = "m_ByteSize";
|
||||
baseStrings[299] = "m_Curve";
|
||||
baseStrings[307] = "m_EditorClassIdentifier";
|
||||
baseStrings[331] = "m_EditorHideFlags";
|
||||
baseStrings[349] = "m_Enabled";
|
||||
baseStrings[359] = "m_ExtensionPtr";
|
||||
baseStrings[374] = "m_GameObject";
|
||||
baseStrings[387] = "m_Index";
|
||||
baseStrings[395] = "m_IsArray";
|
||||
baseStrings[405] = "m_IsStatic";
|
||||
baseStrings[416] = "m_MetaFlag";
|
||||
baseStrings[427] = "m_Name";
|
||||
baseStrings[434] = "m_ObjectHideFlags";
|
||||
baseStrings[452] = "m_PrefabInternal";
|
||||
baseStrings[469] = "m_PrefabParentObject";
|
||||
baseStrings[490] = "m_Script";
|
||||
baseStrings[499] = "m_StaticEditorFlags";
|
||||
baseStrings[519] = "m_Type";
|
||||
baseStrings[526] = "m_Version";
|
||||
baseStrings[536] = "Object";
|
||||
baseStrings[543] = "pair";
|
||||
baseStrings[548] = "PPtr<Component>";
|
||||
baseStrings[564] = "PPtr<GameObject>";
|
||||
baseStrings[581] = "PPtr<Material>";
|
||||
baseStrings[596] = "PPtr<MonoBehaviour>";
|
||||
baseStrings[616] = "PPtr<MonoScript>";
|
||||
baseStrings[633] = "PPtr<Object>";
|
||||
baseStrings[646] = "PPtr<Prefab>";
|
||||
baseStrings[659] = "PPtr<Sprite>";
|
||||
baseStrings[672] = "PPtr<TextAsset>";
|
||||
baseStrings[688] = "PPtr<Texture>";
|
||||
baseStrings[702] = "PPtr<Texture2D>";
|
||||
baseStrings[718] = "PPtr<Transform>";
|
||||
baseStrings[734] = "Prefab";
|
||||
baseStrings[741] = "Quaternionf";
|
||||
baseStrings[753] = "Rectf";
|
||||
baseStrings[759] = "RectInt";
|
||||
baseStrings[767] = "RectOffset";
|
||||
baseStrings[778] = "second";
|
||||
baseStrings[785] = "set";
|
||||
baseStrings[789] = "short";
|
||||
baseStrings[795] = "size";
|
||||
baseStrings[800] = "SInt16";
|
||||
baseStrings[814] = "int64";
|
||||
baseStrings[807] = "SInt32";
|
||||
baseStrings[814] = "SInt64";
|
||||
baseStrings[821] = "SInt8";
|
||||
baseStrings[827] = "staticvector";
|
||||
baseStrings[840] = "string";
|
||||
baseStrings[847] = "TextAsset";
|
||||
baseStrings[857] = "TextMesh";
|
||||
baseStrings[866] = "Texture";
|
||||
baseStrings[874] = "Texture2D";
|
||||
baseStrings[884] = "Transform";
|
||||
baseStrings[894] = "TypelessData";
|
||||
baseStrings[907] = "UInt16";
|
||||
baseStrings[914] = "UInt32";
|
||||
baseStrings[921] = "UInt64";
|
||||
baseStrings[928] = "UInt8";
|
||||
baseStrings[934] = "UInt";
|
||||
baseStrings[934] = "unsigned int";
|
||||
baseStrings[947] = "unsigned long long";
|
||||
baseStrings[966] = "unsigned short";
|
||||
baseStrings[981] = "vector";
|
||||
baseStrings[988] = "Vector2f";
|
||||
baseStrings[997] = "Vector3f";
|
||||
baseStrings[1006] = "Vector4f";
|
||||
baseStrings[1015] = "m_ScriptingClassIdentifier";
|
||||
#endregion
|
||||
|
||||
int varCount = a_Stream.ReadInt32();
|
||||
@ -356,8 +397,8 @@ namespace Unity_Studio
|
||||
a_Stream.Position += varCount * 24;
|
||||
string varStrings = Encoding.UTF8.GetString(a_Stream.ReadBytes(stringSize));
|
||||
string className = "";
|
||||
StringBuilder classVarStr = new StringBuilder();
|
||||
|
||||
var classVarStr = new StringBuilder();
|
||||
var classVarStr2 = new StringBuilder();//用来export
|
||||
//build Class Structures
|
||||
a_Stream.Position -= varCount * 24 + stringSize;
|
||||
for (int i = 0; i < varCount; i++)
|
||||
@ -385,14 +426,18 @@ namespace Unity_Studio
|
||||
int num1 = a_Stream.ReadInt32();
|
||||
|
||||
if (index == 0) { className = varTypeStr + " " + varNameStr; }
|
||||
else { classVarStr.AppendFormat("{0}{1} {2} {3}\r\n", (new string('\t', level - 1)), varTypeStr, varNameStr, size); }
|
||||
else
|
||||
{
|
||||
classVarStr.AppendFormat("{0}{1} {2} {3}\r\n", (new string('\t', level - 1)), varTypeStr, varNameStr, size);
|
||||
classVarStr2.AppendFormat("{0}\t{1}\t{2}\r\n", level - 1, varTypeStr, varNameStr);
|
||||
}
|
||||
|
||||
//for (int t = 0; t < level; t++) { Debug.Write("\t"); }
|
||||
//Debug.WriteLine(varTypeStr + " " + varNameStr + " " + size);
|
||||
}
|
||||
a_Stream.Position += stringSize;
|
||||
|
||||
var aClass = new ClassStrStruct() { ID = classID, Text = className, members = classVarStr.ToString() };
|
||||
var aClass = new ClassStrStruct() { ID = classID, Text = className, members = classVarStr.ToString(), members2 = classVarStr2.ToString() };
|
||||
aClass.SubItems.Add(classID.ToString());
|
||||
ClassStructures.Add(classID, aClass);
|
||||
}
|
||||
|
@ -10,6 +10,7 @@ namespace Unity_Studio
|
||||
{
|
||||
public int ID;
|
||||
public string members;
|
||||
public string members2;
|
||||
}
|
||||
|
||||
public class ClassIDReference
|
||||
|
@ -1,6 +1,5 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.IO;
|
||||
|
||||
@ -21,41 +20,9 @@ namespace Unity_Studio
|
||||
|
||||
public EndianStream(Stream stream, EndianType endian) : base(stream) { }
|
||||
|
||||
~EndianStream()
|
||||
{
|
||||
Dispose();
|
||||
}
|
||||
|
||||
public long Position { get { return base.BaseStream.Position; } set { base.BaseStream.Position = value; } }
|
||||
|
||||
public new void Dispose()
|
||||
{
|
||||
base.Dispose();
|
||||
}
|
||||
|
||||
public override bool ReadBoolean()
|
||||
{
|
||||
return base.ReadBoolean();
|
||||
}
|
||||
|
||||
public override byte ReadByte()
|
||||
{
|
||||
try
|
||||
{
|
||||
return base.ReadByte();
|
||||
}
|
||||
catch
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
public override char ReadChar()
|
||||
{
|
||||
return base.ReadChar();
|
||||
}
|
||||
|
||||
public override Int16 ReadInt16()
|
||||
public override short ReadInt16()
|
||||
{
|
||||
if (endian == EndianType.BigEndian)
|
||||
{
|
||||
@ -77,7 +44,7 @@ namespace Unity_Studio
|
||||
else return base.ReadInt32();
|
||||
}
|
||||
|
||||
public override Int64 ReadInt64()
|
||||
public override long ReadInt64()
|
||||
{
|
||||
if (endian == EndianType.BigEndian)
|
||||
{
|
||||
@ -88,7 +55,7 @@ namespace Unity_Studio
|
||||
else return base.ReadInt64();
|
||||
}
|
||||
|
||||
public override UInt16 ReadUInt16()
|
||||
public override ushort ReadUInt16()
|
||||
{
|
||||
if (endian == EndianType.BigEndian)
|
||||
{
|
||||
@ -99,7 +66,7 @@ namespace Unity_Studio
|
||||
else return base.ReadUInt16();
|
||||
}
|
||||
|
||||
public override UInt32 ReadUInt32()
|
||||
public override uint ReadUInt32()
|
||||
{
|
||||
if (endian == EndianType.BigEndian)
|
||||
{
|
||||
@ -110,7 +77,7 @@ namespace Unity_Studio
|
||||
else return base.ReadUInt32();
|
||||
}
|
||||
|
||||
public override UInt64 ReadUInt64()
|
||||
public override ulong ReadUInt64()
|
||||
{
|
||||
if (endian == EndianType.BigEndian)
|
||||
{
|
||||
@ -121,7 +88,7 @@ namespace Unity_Studio
|
||||
else return base.ReadUInt64();
|
||||
}
|
||||
|
||||
public override Single ReadSingle()
|
||||
public override float ReadSingle()
|
||||
{
|
||||
if (endian == EndianType.BigEndian)
|
||||
{
|
||||
@ -132,7 +99,7 @@ namespace Unity_Studio
|
||||
else return base.ReadSingle();
|
||||
}
|
||||
|
||||
public override Double ReadDouble()
|
||||
public override double ReadDouble()
|
||||
{
|
||||
if (endian == EndianType.BigEndian)
|
||||
{
|
||||
@ -143,14 +110,9 @@ namespace Unity_Studio
|
||||
else return base.ReadDouble();
|
||||
}
|
||||
|
||||
public override string ReadString()
|
||||
{
|
||||
return base.ReadString();
|
||||
}
|
||||
|
||||
public string ReadASCII(int length)
|
||||
{
|
||||
return ASCIIEncoding.ASCII.GetString(base.ReadBytes(length));
|
||||
return Encoding.ASCII.GetString(base.ReadBytes(length));
|
||||
}
|
||||
|
||||
public void AlignStream(int alignment)
|
||||
|
@ -27,7 +27,7 @@ namespace Unity_Studio
|
||||
ClassStrStruct classStructure;
|
||||
if (sourceFile.ClassStructures.TryGetValue(preloadData.Type1, out classStructure))
|
||||
{
|
||||
var member = classStructure.members;
|
||||
var member = classStructure.members2;
|
||||
var strs = member.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries);
|
||||
var sb = new StringBuilder();
|
||||
Read(sb, strs, a_Stream);
|
||||
@ -64,72 +64,83 @@ namespace Unity_Studio
|
||||
{
|
||||
for (int i = 0; i < strs.Length; i++)
|
||||
{
|
||||
var strs2 = strs[i].Split(' ');
|
||||
var str = strs2[0].Split('\t');
|
||||
var level = str.Length - 1;
|
||||
var varTypeStr = str.Last();
|
||||
var varNameStr = strs2[1];
|
||||
if (varTypeStr == "int")
|
||||
var strs2 = strs[i].Split('\t');
|
||||
var level = int.Parse(strs2[0]);
|
||||
var varTypeStr = strs2[1];
|
||||
var varNameStr = strs2[2];
|
||||
if (varTypeStr == "SInt8")//sbyte
|
||||
{
|
||||
var value = a_Stream.ReadInt32();
|
||||
var value = a_Stream.ReadSByte();
|
||||
sb.AppendFormat("{0}{1} {2} = {3}\r\n", (new string('\t', level)), varTypeStr, varNameStr, value);
|
||||
a_Stream.AlignStream(4);
|
||||
}
|
||||
else if (varTypeStr == "UInt")
|
||||
{
|
||||
var value = a_Stream.ReadUInt32();
|
||||
sb.AppendFormat("{0}{1} {2} = {3}\r\n", (new string('\t', level)), varTypeStr, varNameStr, value);
|
||||
a_Stream.AlignStream(4);
|
||||
}
|
||||
else if (varTypeStr == "int64")
|
||||
{
|
||||
var value = a_Stream.ReadInt64();
|
||||
sb.AppendFormat("{0}{1} {2} = {3}\r\n", (new string('\t', level)), varTypeStr, varNameStr, value);
|
||||
a_Stream.AlignStream(4);
|
||||
}
|
||||
else if (varTypeStr == "UInt64")
|
||||
{
|
||||
var value = a_Stream.ReadUInt64();
|
||||
sb.AppendFormat("{0}{1} {2} = {3}\r\n", (new string('\t', level)), varTypeStr, varNameStr, value);
|
||||
a_Stream.AlignStream(4);
|
||||
}
|
||||
else if (varTypeStr == "UInt16")
|
||||
{
|
||||
var value = a_Stream.ReadUInt16();
|
||||
sb.AppendFormat("{0}{1} {2} = {3}\r\n", (new string('\t', level)), varTypeStr, varNameStr, value);
|
||||
a_Stream.AlignStream(4);
|
||||
}
|
||||
else if (varTypeStr == "SInt16")
|
||||
{
|
||||
var value = a_Stream.ReadInt16();
|
||||
sb.AppendFormat("{0}{1} {2} = {3}\r\n", (new string('\t', level)), varTypeStr, varNameStr, value);
|
||||
a_Stream.AlignStream(4);
|
||||
}
|
||||
else if (varTypeStr == "UInt8")
|
||||
else if (varTypeStr == "UInt8")//byte
|
||||
{
|
||||
var value = a_Stream.ReadByte();
|
||||
sb.AppendFormat("{0}{1} {2} = {3}\r\n", (new string('\t', level)), varTypeStr, varNameStr, value);
|
||||
a_Stream.AlignStream(4);
|
||||
}
|
||||
else if (varTypeStr == "float")
|
||||
else if (varTypeStr == "short" || varTypeStr == "SInt16")//Int16
|
||||
{
|
||||
var value = a_Stream.ReadInt16();
|
||||
sb.AppendFormat("{0}{1} {2} = {3}\r\n", (new string('\t', level)), varTypeStr, varNameStr, value);
|
||||
a_Stream.AlignStream(4);
|
||||
}
|
||||
else if (varTypeStr == "UInt16" || varTypeStr == "unsigned short")//UInt16
|
||||
{
|
||||
var value = a_Stream.ReadUInt16();
|
||||
sb.AppendFormat("{0}{1} {2} = {3}\r\n", (new string('\t', level)), varTypeStr, varNameStr, value);
|
||||
a_Stream.AlignStream(4);
|
||||
}
|
||||
else if (varTypeStr == "int" || varTypeStr == "SInt32")//Int32
|
||||
{
|
||||
var value = a_Stream.ReadInt32();
|
||||
sb.AppendFormat("{0}{1} {2} = {3}\r\n", (new string('\t', level)), varTypeStr, varNameStr, value);
|
||||
a_Stream.AlignStream(4);
|
||||
}
|
||||
else if (varTypeStr == "UInt32" || varTypeStr == "unsigned int")//UInt32
|
||||
{
|
||||
var value = a_Stream.ReadUInt32();
|
||||
sb.AppendFormat("{0}{1} {2} = {3}\r\n", (new string('\t', level)), varTypeStr, varNameStr, value);
|
||||
a_Stream.AlignStream(4);
|
||||
}
|
||||
else if (varTypeStr == "long long" || varTypeStr == "SInt64")//Int64
|
||||
{
|
||||
var value = a_Stream.ReadInt64();
|
||||
sb.AppendFormat("{0}{1} {2} = {3}\r\n", (new string('\t', level)), varTypeStr, varNameStr, value);
|
||||
a_Stream.AlignStream(4);
|
||||
}
|
||||
else if (varTypeStr == "UInt64" || varTypeStr == "unsigned long long")//UInt64
|
||||
{
|
||||
var value = a_Stream.ReadUInt64();
|
||||
sb.AppendFormat("{0}{1} {2} = {3}\r\n", (new string('\t', level)), varTypeStr, varNameStr, value);
|
||||
a_Stream.AlignStream(4);
|
||||
}
|
||||
else if (varTypeStr == "float")//float
|
||||
{
|
||||
var value = a_Stream.ReadSingle();
|
||||
sb.AppendFormat("{0}{1} {2} = {3:f}\r\n", (new string('\t', level)), varTypeStr, varNameStr, value);
|
||||
a_Stream.AlignStream(4);
|
||||
}
|
||||
else if (varTypeStr == "bool")
|
||||
else if (varTypeStr == "double")//double
|
||||
{
|
||||
var value = a_Stream.ReadDouble();
|
||||
sb.AppendFormat("{0}{1} {2} = {3:f4}\r\n", (new string('\t', level)), varTypeStr, varNameStr, value);
|
||||
a_Stream.AlignStream(4);
|
||||
}
|
||||
else if (varTypeStr == "bool")//bool
|
||||
{
|
||||
var value = a_Stream.ReadBoolean();
|
||||
sb.AppendFormat("{0}{1} {2} = {3}\r\n", (new string('\t', level)), varTypeStr, varNameStr, value);
|
||||
a_Stream.AlignStream(4);
|
||||
}
|
||||
else if (varTypeStr == "string")
|
||||
else if (varTypeStr == "string")//string
|
||||
{
|
||||
var value = a_Stream.ReadAlignedString(a_Stream.ReadInt32());
|
||||
sb.AppendFormat("{0}{1} {2} = \"{3}\"\r\n", (new string('\t', level)), varTypeStr, varNameStr, value);
|
||||
i += 3;//skip
|
||||
}
|
||||
else if (varTypeStr == "Array")
|
||||
else if (varTypeStr == "Array")//Array
|
||||
{
|
||||
sb.AppendFormat("{0}{1} {2}\r\n", (new string('\t', level)), varTypeStr, varNameStr);
|
||||
var size = a_Stream.ReadInt32();
|
||||
@ -154,9 +165,8 @@ namespace Unity_Studio
|
||||
List<string> strs3 = new List<string>();
|
||||
for (int i = index + 2; i < strs.Length; i++)//skip int size
|
||||
{
|
||||
var strs2 = strs[i].Split(' ');
|
||||
var str = strs2[0].Split('\t');
|
||||
var level2 = str.Length - 1;
|
||||
var strs2 = strs[i].Split('\t');
|
||||
var level2 = int.Parse(strs2[0]);
|
||||
if (level2 <= level)
|
||||
{
|
||||
return strs3.ToArray();
|
||||
|
Loading…
Reference in New Issue
Block a user