123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178 |
- #if UNITY_2019_4_OR_NEWER
- using System.IO;
- using System.Linq;
- using System.Collections.Generic;
- using UnityEditor;
- using UnityEngine;
- using UnityEditor.UIElements;
- using UnityEngine.UIElements;
- namespace YooAsset.Editor
- {
- internal class ReporterSummaryViewer
- {
- private class ItemWrapper
- {
- public string Title { private set; get; }
- public string Value { private set; get; }
- public ItemWrapper(string title, string value)
- {
- Title = title;
- Value = value;
- }
- }
- private VisualTreeAsset _visualAsset;
- private TemplateContainer _root;
- private ListView _listView;
- private readonly List<ItemWrapper> _items = new List<ItemWrapper>();
- /// <summary>
- /// 初始化页面
- /// </summary>
- public void InitViewer()
- {
- // 加载布局文件
- _visualAsset = UxmlLoader.LoadWindowUXML<ReporterSummaryViewer>();
- if (_visualAsset == null)
- return;
- _root = _visualAsset.CloneTree();
- _root.style.flexGrow = 1f;
- // 概述列表
- _listView = _root.Q<ListView>("ListView");
- _listView.makeItem = MakeListViewItem;
- _listView.bindItem = BindListViewItem;
- }
- /// <summary>
- /// 填充页面数据
- /// </summary>
- public void FillViewData(BuildReport buildReport)
- {
- _items.Clear();
- _items.Add(new ItemWrapper("YooAsset版本", buildReport.Summary.YooVersion));
- _items.Add(new ItemWrapper("引擎版本", buildReport.Summary.UnityVersion));
- _items.Add(new ItemWrapper("构建时间", buildReport.Summary.BuildDate));
- _items.Add(new ItemWrapper("构建耗时", ConvertTime(buildReport.Summary.BuildSeconds)));
- _items.Add(new ItemWrapper("构建平台", $"{buildReport.Summary.BuildTarget}"));
- _items.Add(new ItemWrapper("构建管线", $"{buildReport.Summary.BuildPipeline}"));
- _items.Add(new ItemWrapper("构建模式", $"{buildReport.Summary.BuildMode}"));
- _items.Add(new ItemWrapper("包裹名称", buildReport.Summary.BuildPackageName));
- _items.Add(new ItemWrapper("包裹版本", buildReport.Summary.BuildPackageVersion));
- _items.Add(new ItemWrapper(string.Empty, string.Empty));
- _items.Add(new ItemWrapper("启用可寻址资源定位", $"{buildReport.Summary.EnableAddressable}"));
- _items.Add(new ItemWrapper("资源定位地址大小写不敏感", $"{buildReport.Summary.LocationToLower}"));
- _items.Add(new ItemWrapper("包含资源GUID数据", $"{buildReport.Summary.IncludeAssetGUID}"));
- _items.Add(new ItemWrapper("资源包名唯一化", $"{buildReport.Summary.UniqueBundleName}"));
- _items.Add(new ItemWrapper("共享资源打包规则", buildReport.Summary.SharedPackRuleClassName));
- _items.Add(new ItemWrapper("资源加密服务类", buildReport.Summary.EncryptionServicesClassName));
- _items.Add(new ItemWrapper(string.Empty, string.Empty));
- _items.Add(new ItemWrapper("构建参数", string.Empty));
- _items.Add(new ItemWrapper("OutputNameStyle", $"{buildReport.Summary.OutputNameStyle}"));
- _items.Add(new ItemWrapper("CompressOption", $"{buildReport.Summary.CompressOption}"));
- _items.Add(new ItemWrapper("DisableWriteTypeTree", $"{buildReport.Summary.DisableWriteTypeTree}"));
- _items.Add(new ItemWrapper("IgnoreTypeTreeChanges", $"{buildReport.Summary.IgnoreTypeTreeChanges}"));
- _items.Add(new ItemWrapper(string.Empty, string.Empty));
- _items.Add(new ItemWrapper("构建结果", string.Empty));
- _items.Add(new ItemWrapper("构建文件总数", $"{buildReport.Summary.AssetFileTotalCount}"));
- _items.Add(new ItemWrapper("主资源总数", $"{buildReport.Summary.MainAssetTotalCount}"));
- _items.Add(new ItemWrapper("资源包总数", $"{buildReport.Summary.AllBundleTotalCount}"));
- _items.Add(new ItemWrapper("资源包总大小", ConvertSize(buildReport.Summary.AllBundleTotalSize)));
- _items.Add(new ItemWrapper("加密资源包总数", $"{buildReport.Summary.EncryptedBundleTotalCount}"));
- _items.Add(new ItemWrapper("加密资源包总大小", ConvertSize(buildReport.Summary.EncryptedBundleTotalSize)));
- _items.Add(new ItemWrapper("原生资源包总数", $"{buildReport.Summary.RawBundleTotalCount}"));
- _items.Add(new ItemWrapper("原生资源包总大小", ConvertSize(buildReport.Summary.RawBundleTotalSize)));
- _listView.Clear();
- _listView.ClearSelection();
- _listView.itemsSource = _items;
- _listView.Rebuild();
- }
- /// <summary>
- /// 挂接到父类页面上
- /// </summary>
- public void AttachParent(VisualElement parent)
- {
- parent.Add(_root);
- }
- /// <summary>
- /// 从父类页面脱离开
- /// </summary>
- public void DetachParent()
- {
- _root.RemoveFromHierarchy();
- }
- // 列表相关
- private VisualElement MakeListViewItem()
- {
- VisualElement element = new VisualElement();
- element.style.flexDirection = FlexDirection.Row;
- {
- var label = new Label();
- label.name = "Label1";
- label.style.unityTextAlign = TextAnchor.MiddleLeft;
- label.style.marginLeft = 3f;
- //label.style.flexGrow = 1f;
- label.style.width = 200;
- element.Add(label);
- }
- {
- var label = new Label();
- label.name = "Label2";
- label.style.unityTextAlign = TextAnchor.MiddleLeft;
- label.style.marginLeft = 3f;
- label.style.flexGrow = 1f;
- label.style.width = 150;
- element.Add(label);
- }
- return element;
- }
- private void BindListViewItem(VisualElement element, int index)
- {
- var itemWrapper = _items[index];
- // Title
- var label1 = element.Q<Label>("Label1");
- label1.text = itemWrapper.Title;
- // Value
- var label2 = element.Q<Label>("Label2");
- label2.text = itemWrapper.Value;
- }
- private string ConvertTime(int time)
- {
- if (time <= 60)
- {
- return $"{time}秒钟";
- }
- else
- {
- int minute = time / 60;
- return $"{minute}分钟";
- }
- }
- private string ConvertSize(long size)
- {
- if (size == 0)
- return "0";
- return EditorUtility.FormatBytes(size);
- }
- }
- }
- #endif
|