using UnityEditor; using UnityEditor.IMGUI.Controls; using System.Collections.Generic; using System.IO; using System; namespace UnityEngine.AssetBundles { class SingleBundleInspector { public static string currentPath { get; set; } public SingleBundleInspector() { } private Editor m_Editor = null; private Rect m_Position; [SerializeField] private Vector2 m_ScrollPosition; public void SetBundle(AssetBundle bundle, string path = "") { //static var... currentPath = path; //members m_Editor = null; if (bundle != null) m_Editor = Editor.CreateEditor(bundle); } public void OnGUI(Rect pos) { if (m_Editor == null) return; m_Position = pos; DrawBundleData(); } private void DrawBundleData() { GUILayout.BeginArea(m_Position); m_ScrollPosition = EditorGUILayout.BeginScrollView(m_ScrollPosition); m_Editor.OnInspectorGUI(); EditorGUILayout.EndScrollView(); GUILayout.EndArea(); } } [CustomEditor(typeof(AssetBundle))] public class LevelScriptEditor : Editor { public override void OnInspectorGUI() { AssetBundle bundle = target as AssetBundle; using (new EditorGUI.DisabledScope(true)) { var leftStyle = GUI.skin.GetStyle("Label"); leftStyle.alignment = TextAnchor.UpperLeft; GUILayout.Label(new GUIContent("Name: " + bundle.name), leftStyle); long fileSize = -1; if(SingleBundleInspector.currentPath != string.Empty && File.Exists(SingleBundleInspector.currentPath) ) { System.IO.FileInfo fileInfo = new System.IO.FileInfo(SingleBundleInspector.currentPath); fileSize = fileInfo.Length; } if (fileSize < 0) GUILayout.Label(new GUIContent("Size: unknown"), leftStyle); else GUILayout.Label(new GUIContent("Size: " + EditorUtility.FormatBytes(fileSize)), leftStyle); } base.OnInspectorGUI(); } } }