Files
MinFt/Client/Assets/Editor/AssetCheck.cs
Liubing\LB 3d8d4d18f3 first commit
先修复一下,错误的场景

删除不必要的钓场资产

修复into场景

update:更新meta文件,修复报错

update:修复资源

修复第一章节建造

修复建造第三章

update:删除多余内容

update:更新README.md

update:还原图标

update:更新README

update:更新配置
2026-04-28 02:17:22 +08:00

134 lines
5.0 KiB
C#

using System.Collections.Generic;
using System.Linq;
using System.Text;
using UnityEditor;
using UnityEditor.AddressableAssets;
using UnityEditor.AddressableAssets.Settings;
using UnityEngine;
public class AssetCheck
{
[MenuItem("Tools/Check Asset")]
static void CheckAsset()
{
GetAllGroups();
}
static void GetAllGroups()
{
var settings = AddressableAssetSettingsDefaultObject.Settings;
var allGroups = settings.groups.Where(x => !x.name.StartsWith("Localization")).ToList();
var packedEntries = new List<AddressableAssetEntry>();
foreach (var g in allGroups)
{
foreach (var e in g.entries)
{
if (e.labels.Contains("pack"))
{
packedEntries.Add(e);
}
}
}
var message = "\r\n";
foreach (var e in packedEntries)
{
var dependencies = AssetDatabase.GetDependencies(e.AssetPath, true);
var sb = new StringBuilder();
foreach (var d in dependencies)
{
var de = settings.FindAssetEntry(AssetDatabase.AssetPathToGUID(d));
if (de != null && !de.labels.Contains("pack"))
{
if (sb.Length == 0)
{
sb.AppendLine(e.address);
sb.AppendLine($"---- {de.parentGroup.Name} {de.address}");
}
else
{
sb.AppendLine($"---- {de.parentGroup.Name} {de.address}");
}
}
}
message += sb.ToString();
}
Debug.Log(message);
}
[MenuItem("Assets/Check Asset")]
static void MenuAssetsFish()
{
if (Selection.activeObject == null)
{
Debug.Log("Assets choose null");
}
else
{
Debug.Log("Assets name = " + Selection.activeObject.name);
GameObject prefab = Selection.activeObject as GameObject;
string path = AssetDatabase.GetAssetPath(Selection.activeObject);
var settings = AddressableAssetSettingsDefaultObject.Settings;
var entry = settings.FindAssetEntry(AssetDatabase.AssetPathToGUID(path));
if (entry != null)
{
AddressableAssetGroup addressableAssetGroup = entry.parentGroup;
Debug.Log("This asset is addressable, group name = " + addressableAssetGroup.Name);
var addressableAssetEntries = addressableAssetGroup.entries.Where(x => x.labels.Contains(entry.labels.FirstOrDefault())).ToList();
var message = "\r\n";
foreach (var e in addressableAssetEntries)
{
var dependencies = AssetDatabase.GetDependencies(e.AssetPath, true);
var sb = new StringBuilder();
var sb1 = new StringBuilder();
foreach (var d in dependencies)
{
var de = settings.FindAssetEntry(AssetDatabase.AssetPathToGUID(d));
if (de != null && !de.labels.Contains("pack") && de.parentGroup.Name != "IconSingle" && !de.labels.Contains(entry.labels.FirstOrDefault()))
{
if (de.parentGroup == addressableAssetGroup)
{
if (sb1.Length == 0)
{
sb1.AppendLine("↓同一Group 不同主题或当前活动公用");
sb1.AppendLine(e.address);
sb1.AppendLine($"---- {de.parentGroup.Name} {de.AssetPath}");
}
else
{
sb1.AppendLine($"---- {de.parentGroup.Name} {de.AssetPath}");
}
}
else
{
if (sb.Length == 0)
{
sb.AppendLine("↓不同 Group 引用其他活动资源");
sb.AppendLine(e.address);
sb.AppendLine($"---- {de.parentGroup.Name} {de.AssetPath}");
}
else
{
sb.AppendLine($"---- {de.parentGroup.Name} {de.AssetPath}");
}
}
}
}
message += sb1.ToString() + sb.ToString();
}
Debug.Log(message);
}
else
{
Debug.Log("This asset is not addressable");
}
}
}
}