diff --git a/AssetStudio/AssetStudioForm.cs b/AssetStudio/AssetStudioForm.cs index 0ea2f27..0915e94 100644 --- a/AssetStudio/AssetStudioForm.cs +++ b/AssetStudio/AssetStudioForm.cs @@ -836,7 +836,7 @@ namespace AssetStudio case ClassIDType.MonoBehaviour: { var m_MonoBehaviour = new MonoBehaviour(asset); - if (asset.serializedType.m_Nodes != null) + if (asset.serializedType?.m_Nodes != null) { textPreviewBox.Text = asset.Dump(); } diff --git a/AssetStudio/Classes/BuildSettings.cs b/AssetStudio/Classes/BuildSettings.cs index ae748d5..a4157a9 100644 --- a/AssetStudio/Classes/BuildSettings.cs +++ b/AssetStudio/Classes/BuildSettings.cs @@ -11,34 +11,17 @@ namespace AssetStudio public BuildSettings(AssetPreloadData preloadData) : base(preloadData) { - int levels = reader.ReadInt32(); - for (int l = 0; l < levels; l++) + int levelsNum = reader.ReadInt32(); + for (int i = 0; i < levelsNum; i++) { var level = reader.ReadAlignedString(); } - if (version[0] >= 5) - { - int preloadedPlugins = reader.ReadInt32(); - for (int l = 0; l < preloadedPlugins; l++) - { - var preloadedPlugin = reader.ReadAlignedString(); - } - } + var hasRenderTexture = reader.ReadBoolean(); + var hasPROVersion = reader.ReadBoolean(); + var hasPublishingRights = reader.ReadBoolean(); + var hasShadows = reader.ReadBoolean(); - reader.Position += 4; - if (version[0] >= 3) //3.0 and up - { - reader.Position += 4; - } - if (version[0] > 3 || (version[0] == 3 && version[1] >= 5))//3.5 and up - { - reader.Position += 4; - } - if (version[0] >= 5 || (version[0] == 4 && (version[1] >= 3 || (version[1] == 2 && buildType[0] != "a")))) - { - reader.Position += 4; - } m_Version = reader.ReadAlignedString(); } } diff --git a/AssetStudio/Classes/PlayerSettings.cs b/AssetStudio/Classes/PlayerSettings.cs index 4844267..d09a891 100644 --- a/AssetStudio/Classes/PlayerSettings.cs +++ b/AssetStudio/Classes/PlayerSettings.cs @@ -12,62 +12,38 @@ namespace AssetStudio public PlayerSettings(AssetPreloadData preloadData) : base(preloadData) { - if ((version[0] == 5 && version[1] >= 4) || version[0] > 5)//5.4.0 nad up + if (version[0] > 5 || (version[0] == 5 && version[1] >= 4)) //5.4.0 nad up { - //productGUID - reader.ReadInt32(); - reader.ReadInt32(); - reader.ReadInt32(); - reader.ReadInt32(); + var productGUID = reader.ReadBytes(16); } - if (version[0] >= 3) + + var AndroidProfiler = reader.ReadBoolean(); + //bool AndroidFilterTouchesWhenObscured 2017.2 and up + //bool AndroidEnableSustainedPerformanceMode 2018 and up + reader.AlignStream(4); + int defaultScreenOrientation = reader.ReadInt32(); + int targetDevice = reader.ReadInt32(); + if (version[0] < 5 || (version[0] == 5 && version[1] < 3)) //5.3 down { - if (version[0] == 3 && version[1] < 2) + if (version[0] < 5) //5.0 down { - string AndroidLicensePublicKey = reader.ReadAlignedString(); - } - else - { - bool AndroidProfiler = reader.ReadBoolean(); reader.AlignStream(4); - } - - int defaultScreenOrientation = reader.ReadInt32(); - int targetDevice = reader.ReadInt32(); - - if (version[0] < 5 || (version[0] == 5 && version[1] < 1)) - { - int targetGlesGraphics = reader.ReadInt32(); - } - - if ((version[0] == 5 && version[1] < 1) || (version[0] == 4 && version[1] == 6 && version[2] >= 3)) - { - int targetIOSGraphics = reader.ReadInt32(); - } - - if (version[0] >= 5 || version[0] == 5 && (version[1] > 2 || (version[1] == 2 && version[2] >= 1))) - { - bool useOnDemandResources = reader.ReadBoolean(); reader.AlignStream(4); - } - - if (version[0] < 5 || (version[0] == 5 && version[1] < 3)) - { - int targetResolution = reader.ReadInt32(); - } - - if (version[0] == 3 && version[1] <= 1) - { - bool OverrideIPodMusic = reader.ReadBoolean(); reader.AlignStream(4); - } - else if (version[0] == 3 && version[1] <= 4) - { - - } - else//3.5.0 and up - { - int accelerometerFrequency = reader.ReadInt32(); + int targetPlatform = reader.ReadInt32(); //4.0 and up targetGlesGraphics + if (version[0] > 4 || (version[0] == 4 && version[1] >= 6)) //4.6 and up + { + var targetIOSGraphics = reader.ReadInt32(); + } } + int targetResolution = reader.ReadInt32(); + } + else + { + var useOnDemandResources = reader.ReadBoolean(); + reader.AlignStream(4); + } + if (version[0] > 3 || (version[0] == 3 && version[1] >= 5)) //3.5 and up + { + var accelerometerFrequency = reader.ReadInt32(); } - //fail in version 5 beta companyName = reader.ReadAlignedString(); productName = reader.ReadAlignedString(); } diff --git a/AssetStudio/StudioClasses/AssetPreloadData.cs b/AssetStudio/StudioClasses/AssetPreloadData.cs index e59e794..b9b4578 100644 --- a/AssetStudio/StudioClasses/AssetPreloadData.cs +++ b/AssetStudio/StudioClasses/AssetPreloadData.cs @@ -50,7 +50,7 @@ namespace AssetStudio public string Dump() { var reader = InitReader(); - if (serializedType.m_Nodes != null) + if (serializedType?.m_Nodes != null) { var sb = new StringBuilder(); TypeTreeHelper.ReadTypeString(sb, serializedType.m_Nodes, reader); diff --git a/AssetStudio/StudioClasses/Exporter.cs b/AssetStudio/StudioClasses/Exporter.cs index 64ed106..9d09976 100644 --- a/AssetStudio/StudioClasses/Exporter.cs +++ b/AssetStudio/StudioClasses/Exporter.cs @@ -107,7 +107,7 @@ namespace AssetStudio return false; var m_MonoBehaviour = new MonoBehaviour(asset); string str; - if (asset.serializedType.m_Nodes != null) + if (asset.serializedType?.m_Nodes != null) { str = asset.Dump(); }