mirror of
https://github.com/aelurum/AssetStudio.git
synced 2025-05-25 05:40:21 -04:00
Skip reading failed assets
This commit is contained in:
parent
16dddc01e3
commit
cffe96b409
@ -1,4 +1,5 @@
|
|||||||
using System.Collections.Generic;
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using static AssetStudio.ImportHelper;
|
using static AssetStudio.ImportHelper;
|
||||||
@ -110,7 +111,7 @@ namespace AssetStudio
|
|||||||
catch
|
catch
|
||||||
{
|
{
|
||||||
reader.Dispose();
|
reader.Dispose();
|
||||||
//Logger.Error($"Unable to load assets file {fileName}");
|
//Logger.Warning($"Unable to load assets file {fileName}");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -121,7 +122,8 @@ namespace AssetStudio
|
|||||||
|
|
||||||
private void LoadAssetsFromMemory(string fullName, EndianBinaryReader reader, string originalPath, string unityVersion = null)
|
private void LoadAssetsFromMemory(string fullName, EndianBinaryReader reader, string originalPath, string unityVersion = null)
|
||||||
{
|
{
|
||||||
var upperFileName = Path.GetFileName(fullName).ToUpper();
|
var fileName = Path.GetFileName(fullName);
|
||||||
|
var upperFileName = fileName.ToUpper();
|
||||||
if (!assetsFileListHash.Contains(upperFileName))
|
if (!assetsFileListHash.Contains(upperFileName))
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
@ -239,92 +241,107 @@ namespace AssetStudio
|
|||||||
foreach (var objectInfo in assetsFile.m_Objects)
|
foreach (var objectInfo in assetsFile.m_Objects)
|
||||||
{
|
{
|
||||||
var objectReader = new ObjectReader(assetsFile.reader, assetsFile, objectInfo);
|
var objectReader = new ObjectReader(assetsFile.reader, assetsFile, objectInfo);
|
||||||
switch (objectReader.type)
|
try
|
||||||
{
|
{
|
||||||
case ClassIDType.Animation:
|
Object obj;
|
||||||
assetsFile.Objects.Add(objectInfo.m_PathID, new Animation(objectReader));
|
switch (objectReader.type)
|
||||||
break;
|
{
|
||||||
case ClassIDType.AnimationClip:
|
case ClassIDType.Animation:
|
||||||
assetsFile.Objects.Add(objectInfo.m_PathID, new AnimationClip(objectReader));
|
obj = new Animation(objectReader);
|
||||||
break;
|
break;
|
||||||
case ClassIDType.Animator:
|
case ClassIDType.AnimationClip:
|
||||||
assetsFile.Objects.Add(objectInfo.m_PathID, new Animator(objectReader));
|
obj = new AnimationClip(objectReader);
|
||||||
break;
|
break;
|
||||||
case ClassIDType.AnimatorController:
|
case ClassIDType.Animator:
|
||||||
assetsFile.Objects.Add(objectInfo.m_PathID, new AnimatorController(objectReader));
|
obj = new Animator(objectReader);
|
||||||
break;
|
break;
|
||||||
case ClassIDType.AnimatorOverrideController:
|
case ClassIDType.AnimatorController:
|
||||||
assetsFile.Objects.Add(objectInfo.m_PathID, new AnimatorOverrideController(objectReader));
|
obj = new AnimatorController(objectReader);
|
||||||
break;
|
break;
|
||||||
case ClassIDType.AssetBundle:
|
case ClassIDType.AnimatorOverrideController:
|
||||||
assetsFile.Objects.Add(objectInfo.m_PathID, new AssetBundle(objectReader));
|
obj = new AnimatorOverrideController(objectReader);
|
||||||
break;
|
break;
|
||||||
case ClassIDType.AudioClip:
|
case ClassIDType.AssetBundle:
|
||||||
assetsFile.Objects.Add(objectInfo.m_PathID, new AudioClip(objectReader));
|
obj = new AssetBundle(objectReader);
|
||||||
break;
|
break;
|
||||||
case ClassIDType.Avatar:
|
case ClassIDType.AudioClip:
|
||||||
assetsFile.Objects.Add(objectInfo.m_PathID, new Avatar(objectReader));
|
obj = new AudioClip(objectReader);
|
||||||
break;
|
break;
|
||||||
case ClassIDType.Font:
|
case ClassIDType.Avatar:
|
||||||
assetsFile.Objects.Add(objectInfo.m_PathID, new Font(objectReader));
|
obj = new Avatar(objectReader);
|
||||||
break;
|
break;
|
||||||
case ClassIDType.GameObject:
|
case ClassIDType.Font:
|
||||||
assetsFile.Objects.Add(objectInfo.m_PathID, new GameObject(objectReader));
|
obj = new Font(objectReader);
|
||||||
break;
|
break;
|
||||||
case ClassIDType.Material:
|
case ClassIDType.GameObject:
|
||||||
assetsFile.Objects.Add(objectInfo.m_PathID, new Material(objectReader));
|
obj = new GameObject(objectReader);
|
||||||
break;
|
break;
|
||||||
case ClassIDType.Mesh:
|
case ClassIDType.Material:
|
||||||
assetsFile.Objects.Add(objectInfo.m_PathID, new Mesh(objectReader));
|
obj = new Material(objectReader);
|
||||||
break;
|
break;
|
||||||
case ClassIDType.MeshFilter:
|
case ClassIDType.Mesh:
|
||||||
assetsFile.Objects.Add(objectInfo.m_PathID, new MeshFilter(objectReader));
|
obj = new Mesh(objectReader);
|
||||||
break;
|
break;
|
||||||
case ClassIDType.MeshRenderer:
|
case ClassIDType.MeshFilter:
|
||||||
assetsFile.Objects.Add(objectInfo.m_PathID, new MeshRenderer(objectReader));
|
obj = new MeshFilter(objectReader);
|
||||||
break;
|
break;
|
||||||
case ClassIDType.MonoBehaviour:
|
case ClassIDType.MeshRenderer:
|
||||||
assetsFile.Objects.Add(objectInfo.m_PathID, new MonoBehaviour(objectReader));
|
obj = new MeshRenderer(objectReader);
|
||||||
break;
|
break;
|
||||||
case ClassIDType.MonoScript:
|
case ClassIDType.MonoBehaviour:
|
||||||
assetsFile.Objects.Add(objectInfo.m_PathID, new MonoScript(objectReader));
|
obj = new MonoBehaviour(objectReader);
|
||||||
break;
|
break;
|
||||||
case ClassIDType.MovieTexture:
|
case ClassIDType.MonoScript:
|
||||||
assetsFile.Objects.Add(objectInfo.m_PathID, new MovieTexture(objectReader));
|
obj = new MonoScript(objectReader);
|
||||||
break;
|
break;
|
||||||
case ClassIDType.PlayerSettings:
|
case ClassIDType.MovieTexture:
|
||||||
assetsFile.Objects.Add(objectInfo.m_PathID, new PlayerSettings(objectReader));
|
obj = new MovieTexture(objectReader);
|
||||||
break;
|
break;
|
||||||
case ClassIDType.RectTransform:
|
case ClassIDType.PlayerSettings:
|
||||||
assetsFile.Objects.Add(objectInfo.m_PathID, new RectTransform(objectReader));
|
obj = new PlayerSettings(objectReader);
|
||||||
break;
|
break;
|
||||||
case ClassIDType.Shader:
|
case ClassIDType.RectTransform:
|
||||||
assetsFile.Objects.Add(objectInfo.m_PathID, new Shader(objectReader));
|
obj = new RectTransform(objectReader);
|
||||||
break;
|
break;
|
||||||
case ClassIDType.SkinnedMeshRenderer:
|
case ClassIDType.Shader:
|
||||||
assetsFile.Objects.Add(objectInfo.m_PathID, new SkinnedMeshRenderer(objectReader));
|
obj = new Shader(objectReader);
|
||||||
break;
|
break;
|
||||||
case ClassIDType.Sprite:
|
case ClassIDType.SkinnedMeshRenderer:
|
||||||
assetsFile.Objects.Add(objectInfo.m_PathID, new Sprite(objectReader));
|
obj = new SkinnedMeshRenderer(objectReader);
|
||||||
break;
|
break;
|
||||||
case ClassIDType.SpriteAtlas:
|
case ClassIDType.Sprite:
|
||||||
assetsFile.Objects.Add(objectInfo.m_PathID, new SpriteAtlas(objectReader));
|
obj = new Sprite(objectReader);
|
||||||
break;
|
break;
|
||||||
case ClassIDType.TextAsset:
|
case ClassIDType.SpriteAtlas:
|
||||||
assetsFile.Objects.Add(objectInfo.m_PathID, new TextAsset(objectReader));
|
obj = new SpriteAtlas(objectReader);
|
||||||
break;
|
break;
|
||||||
case ClassIDType.Texture2D:
|
case ClassIDType.TextAsset:
|
||||||
assetsFile.Objects.Add(objectInfo.m_PathID, new Texture2D(objectReader));
|
obj = new TextAsset(objectReader);
|
||||||
break;
|
break;
|
||||||
case ClassIDType.Transform:
|
case ClassIDType.Texture2D:
|
||||||
assetsFile.Objects.Add(objectInfo.m_PathID, new Transform(objectReader));
|
obj = new Texture2D(objectReader);
|
||||||
break;
|
break;
|
||||||
case ClassIDType.VideoClip:
|
case ClassIDType.Transform:
|
||||||
assetsFile.Objects.Add(objectInfo.m_PathID, new VideoClip(objectReader));
|
obj = new Transform(objectReader);
|
||||||
break;
|
break;
|
||||||
default:
|
case ClassIDType.VideoClip:
|
||||||
assetsFile.Objects.Add(objectInfo.m_PathID, new Object(objectReader));
|
obj = new VideoClip(objectReader);
|
||||||
break;
|
break;
|
||||||
|
default:
|
||||||
|
obj = new Object(objectReader);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
assetsFile.Objects.Add(objectInfo.m_PathID, obj);
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
/*var sb = new StringBuilder();
|
||||||
|
sb.AppendLine("Unable to load object")
|
||||||
|
.AppendLine($"Assets {assetsFile.fileName}")
|
||||||
|
.AppendLine($"Type {objectReader.type}")
|
||||||
|
.AppendLine($"PathID {objectInfo.m_PathID}")
|
||||||
|
.Append(e);
|
||||||
|
Logger.Error(sb.ToString());*/
|
||||||
}
|
}
|
||||||
|
|
||||||
Progress.Report(++i, progressCount);
|
Progress.Report(++i, progressCount);
|
||||||
|
@ -214,7 +214,14 @@ namespace AssetStudioGUI
|
|||||||
filterTypeToolStripMenuItem.DropDownItems.Add(typeItem);
|
filterTypeToolStripMenuItem.DropDownItems.Add(typeItem);
|
||||||
}
|
}
|
||||||
allToolStripMenuItem.Checked = true;
|
allToolStripMenuItem.Checked = true;
|
||||||
StatusStripUpdate($"Finished loading {assetsManager.assetsFileList.Count} files with {assetListView.Items.Count} exportable assets.");
|
var log = $"Finished loading {assetsManager.assetsFileList.Count} files with {assetListView.Items.Count} exportable assets";
|
||||||
|
var m_ObjectsCount = assetsManager.assetsFileList.Sum(x => x.m_Objects.Count);
|
||||||
|
var objectsCount = assetsManager.assetsFileList.Sum(x => x.Objects.Count);
|
||||||
|
if (m_ObjectsCount != objectsCount)
|
||||||
|
{
|
||||||
|
log += $" and {m_ObjectsCount - objectsCount} assets failed to read";
|
||||||
|
}
|
||||||
|
StatusStripUpdate(log);
|
||||||
treeSearch.Select();
|
treeSearch.Select();
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user