diff --git a/Assets/YooAsset/Editor/AssetArtReporter/AssetArtReporterWindow.cs b/Assets/YooAsset/Editor/AssetArtReporter/AssetArtReporterWindow.cs
index e246c7ca..610fd4e9 100644
--- a/Assets/YooAsset/Editor/AssetArtReporter/AssetArtReporterWindow.cs
+++ b/Assets/YooAsset/Editor/AssetArtReporter/AssetArtReporterWindow.cs
@@ -196,6 +196,32 @@ namespace YooAsset.Editor
}
}
+ ///
+ /// 导入单个报告对象
+ ///
+ public void ImportSingleReprotFile(ScanReport report)
+ {
+ _reportCombiner = new ScanReportCombiner();
+
+ try
+ {
+ _reportCombiner.Combine(report);
+
+ // 刷新页面
+ RefreshToolbar();
+ FillTableView();
+ RebuildView();
+ }
+ catch (System.Exception e)
+ {
+ _reportCombiner = null;
+ _titleLabel.text = "导入报告失败!";
+ _descLabel.text = e.Message;
+ UnityEngine.Debug.LogError(e.StackTrace);
+ }
+ }
+
+
private void ImportSingleBtn_clicked()
{
string selectFilePath = EditorUtility.OpenFilePanel("导入报告", _lastestOpenFolder, "json");
@@ -446,15 +472,31 @@ namespace YooAsset.Editor
var column = new TableColumn(header.HeaderTitle, header.HeaderTitle, columnStyle);
column.MakeCell = () =>
{
- var label = new Label();
- label.style.marginLeft = 3f;
- label.style.unityTextAlign = TextAnchor.MiddleLeft;
- return label;
+ if (header.HeaderType == EHeaderType.AssetObject)
+ {
+ var objectFiled = new ObjectField();
+ return objectFiled;
+ }
+ else
+ {
+ var label = new Label();
+ label.style.marginLeft = 3f;
+ label.style.unityTextAlign = TextAnchor.MiddleLeft;
+ return label;
+ }
};
column.BindCell = (VisualElement element, ITableData data, ITableCell cell) =>
{
- var infoLabel = element as Label;
- infoLabel.text = (string)cell.GetDisplayObject();
+ if (header.HeaderType == EHeaderType.AssetObject)
+ {
+ var objectFiled = element as ObjectField;
+ objectFiled.value = (UnityEngine.Object)cell.GetDisplayObject();
+ }
+ else
+ {
+ var infoLabel = element as Label;
+ infoLabel.text = (string)cell.GetDisplayObject();
+ }
};
_elementTableView.AddColumn(column);
}
@@ -480,6 +522,10 @@ namespace YooAsset.Editor
{
tableData.AddAssetPathCell(scanInfo.HeaderTitle, scanInfo.ScanInfo);
}
+ else if (header.HeaderType == EHeaderType.AssetObject)
+ {
+ tableData.AddAssetObjectCell(scanInfo.HeaderTitle, scanInfo.ScanInfo);
+ }
else if (header.HeaderType == EHeaderType.StringValue)
{
tableData.AddStringValueCell(scanInfo.HeaderTitle, scanInfo.ScanInfo);
diff --git a/Assets/YooAsset/Editor/AssetArtReporter/EHeaderType.cs b/Assets/YooAsset/Editor/AssetArtReporter/EHeaderType.cs
index 3e3ee17f..009c7189 100644
--- a/Assets/YooAsset/Editor/AssetArtReporter/EHeaderType.cs
+++ b/Assets/YooAsset/Editor/AssetArtReporter/EHeaderType.cs
@@ -8,6 +8,11 @@ namespace YooAsset.Editor
///
AssetPath,
+ ///
+ /// 资源对象
+ ///
+ AssetObject,
+
///
/// 字符串
///
diff --git a/Assets/YooAsset/Editor/AssetArtReporter/ReportHeader.cs b/Assets/YooAsset/Editor/AssetArtReporter/ReportHeader.cs
index ca194dde..2109e101 100644
--- a/Assets/YooAsset/Editor/AssetArtReporter/ReportHeader.cs
+++ b/Assets/YooAsset/Editor/AssetArtReporter/ReportHeader.cs
@@ -126,6 +126,12 @@ namespace YooAsset.Editor
if (string.IsNullOrEmpty(guid))
throw new Exception($"{HeaderTitle} value is invalid asset path : {value}");
}
+ else if (HeaderType == EHeaderType.AssetObject)
+ {
+ string guid = AssetDatabase.AssetPathToGUID(value);
+ if (string.IsNullOrEmpty(guid))
+ throw new Exception($"{HeaderTitle} value is invalid asset object : {value}");
+ }
else if (HeaderType == EHeaderType.DoubleValue)
{
if (double.TryParse(value, out double doubleValue) == false)
diff --git a/Assets/YooAsset/Editor/AssetArtScanner/AssetArtScannerSetting.cs b/Assets/YooAsset/Editor/AssetArtScanner/AssetArtScannerSetting.cs
index f82c10ef..dd54aa6c 100644
--- a/Assets/YooAsset/Editor/AssetArtScanner/AssetArtScannerSetting.cs
+++ b/Assets/YooAsset/Editor/AssetArtScanner/AssetArtScannerSetting.cs
@@ -46,7 +46,7 @@ namespace YooAsset.Editor
}
catch (Exception e)
{
- return new ScannerResult(e.Message);
+ return new ScannerResult(e.StackTrace);
}
}
diff --git a/Assets/YooAsset/Editor/AssetArtScanner/ScannerResult.cs b/Assets/YooAsset/Editor/AssetArtScanner/ScannerResult.cs
index 0e4a9c34..94b71fd4 100644
--- a/Assets/YooAsset/Editor/AssetArtScanner/ScannerResult.cs
+++ b/Assets/YooAsset/Editor/AssetArtScanner/ScannerResult.cs
@@ -52,7 +52,7 @@ namespace YooAsset.Editor
if (Succeed)
{
var reproterWindow = AssetArtReporterWindow.OpenWindow();
- reproterWindow.ImportSingleReprotFile(ReprotFilePath);
+ reproterWindow.ImportSingleReprotFile(Report);
}
}
}
diff --git a/Assets/YooAsset/Editor/UIElements/TableViewer/DefaultCells/AssetObjectCell.cs b/Assets/YooAsset/Editor/UIElements/TableViewer/DefaultCells/AssetObjectCell.cs
new file mode 100644
index 00000000..5248b598
--- /dev/null
+++ b/Assets/YooAsset/Editor/UIElements/TableViewer/DefaultCells/AssetObjectCell.cs
@@ -0,0 +1,42 @@
+#if UNITY_2019_4_OR_NEWER
+using UnityEditor;
+using System;
+
+namespace YooAsset.Editor
+{
+ public class AssetObjectCell : ITableCell, IComparable
+ {
+ public string SearchTag { private set; get; }
+ public object CellValue { set; get; }
+ public string StringValue
+ {
+ get
+ {
+ return (string)CellValue;
+ }
+ }
+
+ public AssetObjectCell(string searchTag, string assetPath)
+ {
+ SearchTag = searchTag;
+ CellValue = assetPath;
+ }
+
+ public object GetDisplayObject()
+ {
+ return AssetDatabase.LoadMainAssetAtPath(StringValue);
+ }
+ public int CompareTo(object other)
+ {
+ if (other is AssetObjectCell cell)
+ {
+ return this.StringValue.CompareTo(cell.StringValue);
+ }
+ else
+ {
+ return 0;
+ }
+ }
+ }
+}
+#endif
\ No newline at end of file
diff --git a/Assets/YooAsset/Editor/UIElements/TableViewer/DefaultCells/AssetObjectCell.cs.meta b/Assets/YooAsset/Editor/UIElements/TableViewer/DefaultCells/AssetObjectCell.cs.meta
new file mode 100644
index 00000000..59ffb0bf
--- /dev/null
+++ b/Assets/YooAsset/Editor/UIElements/TableViewer/DefaultCells/AssetObjectCell.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 39db4a569a0f69443a7675e19c99c389
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/YooAsset/Editor/UIElements/TableViewer/DefaultTableData/DefaultTableData.cs b/Assets/YooAsset/Editor/UIElements/TableViewer/DefaultTableData/DefaultTableData.cs
index 90946248..acc35f63 100644
--- a/Assets/YooAsset/Editor/UIElements/TableViewer/DefaultTableData/DefaultTableData.cs
+++ b/Assets/YooAsset/Editor/UIElements/TableViewer/DefaultTableData/DefaultTableData.cs
@@ -31,9 +31,14 @@ namespace YooAsset.Editor
var cell = new ButtonCell(searchTag);
Cells.Add(cell);
}
- public void AddAssetPathCell(string searchTag, string path)
+ public void AddAssetPathCell(string searchTag, string assetPath)
{
- var cell = new AssetPathCell(searchTag, path);
+ var cell = new AssetPathCell(searchTag, assetPath);
+ Cells.Add(cell);
+ }
+ public void AddAssetObjectCell(string searchTag, string assetPath)
+ {
+ var cell = new AssetObjectCell(searchTag, assetPath);
Cells.Add(cell);
}
public void AddStringValueCell(string searchTag, string value)