private void DrawSpriteColliderInfo() { ShowUtil.DrawTitle("代表本体的碰撞信息", Color.magenta); ShowUtil.DrawLine(); GUILayout.BeginHorizontal(); GUILayout.FlexibleSpace(); if (GUILayout.Button("重置", GUILayout.Width(120f))) { SetSpriteCollider(); } GUILayout.EndHorizontal(); if (spriteInfo.spriteCollider == null) { EditorUtils.DrawNoCollider(); return; } ObjCollider objCollider = spriteInfo.spriteCollider; EditorGUI.indentLevel += 2; EditorGUILayout.ObjectField("碰撞体", objCollider, typeof(ObjCollider), true); objCollider.gameObject.layer = EditorGUILayout.LayerField("碰撞体层级", objCollider.gameObject.layer, GUILayout.ExpandWidth(true)); EditorGUILayout.ObjectField("信息体", objCollider.info, typeof(ObjInfo), true); EditorGUI.indentLevel -= 2; }
private void DrawOtherInfo() { ShowUtil.DrawTitle("其他配置", Color.yellow); EditorGUIUtility.labelWidth = 250f; EditorGUI.indentLevel += 2; //角色层级 GUILayout.BeginHorizontal(); charater.layer = EditorGUILayout.LayerField("角色层级", charater.layer); if (GUILayout.Button("设置", GUILayout.Width(120f))) { charater.layer = Const.LAYER_CHARACTER_MOVER; } GUILayout.EndHorizontal(); //骨骼数 bonePre = EditorGUILayout.TextField("骨骼前缀", bonePre); GUILayout.BeginHorizontal(); EditorGUILayout.IntField("骨骼数", spriteInfo.boneCount); if (GUILayout.Button("设置", GUILayout.Width(120f))) { spriteInfo.boneCount = Utils.CalcBoneCount(charater, bonePre); } GUILayout.EndHorizontal(); //面数 GUILayout.BeginHorizontal(); EditorGUILayout.IntField("模型面数", spriteInfo.trisCount); if (GUILayout.Button("设置", GUILayout.Width(120f))) { spriteInfo.trisCount = Utils.CalcTriCount(charater); } GUILayout.EndHorizontal(); EditorGUI.indentLevel -= 2; }
private void DrawObstacleInfo() { ShowUtil.DrawTitle("障碍信息", Color.yellow); ShowUtil.DrawLine(); GUILayout.BeginHorizontal(); GUILayout.FlexibleSpace(); if (GUILayout.Button("设置障碍", GUILayout.Width(120f))) { SetObstacle(); } GUILayout.EndHorizontal(); if (itemInfo.obstacle == null) { EditorGUILayout.LabelField("没有设置障碍", GUILayout.Width(120)); return; } EditorGUI.indentLevel += 2; EditorGUILayout.ObjectField("障碍", itemInfo.obstacle, typeof(GameObject), true); Collider obstacleCollider = itemInfo.obstacle.GetComponent <Collider>(); if (obstacleCollider == null) { EditorGUILayout.LabelField("请设置障碍的Collider"); } EditorGUI.indentLevel -= 2; }
private void DrawBoneWearInfo() { ShowUtil.DrawTitle("骨骼装配方案", Color.magenta); ShowUtil.DrawLine(); GUILayout.BeginHorizontal(); GUILayout.FlexibleSpace(); if (GUILayout.Button("添加骨骼", GUILayout.Width(120f))) { List <EquipInfo.EquipSki> skis; if (equipInfo.skis == null) { skis = new List <EquipInfo.EquipSki>(); } else { skis = new List <EquipInfo.EquipSki>(equipInfo.skis); } skis.Add(new EquipInfo.EquipSki()); equipInfo.skis = skis.ToArray(); } GUILayout.EndHorizontal(); if (null == equipInfo.skis) { return; } for (int i = 0; i < equipInfo.skis.Length; ++i) { ShowUtil.DrawLine(); DrawOneSki(equipInfo.skis[i]); } }
static void ShowEquipEditor() { Type gameView = ShowUtil.GetGameViewType(); var window = GetWindow <EquipEditor>("装备编辑", true, gameView); window.Show(); }
private void DrawUsableColliderInfo() { ShowUtil.DrawTitle("使用的碰撞信息", Color.magenta); ShowUtil.DrawLine(); GUILayout.BeginHorizontal(); GUILayout.FlexibleSpace(); if (GUILayout.Button("添加", GUILayout.Width(120f))) { UseableCollider collider = EditorUtils.AddUsableCollider(furniture.transform, furnitureInfo, 3, true); List <UseableCollider> newColliders = new List <UseableCollider>(furnitureInfo.usableColliders); newColliders.Add(collider); furnitureInfo.usableColliders = newColliders.ToArray(); } GUILayout.EndHorizontal(); if (furnitureInfo.usableColliders == null || furnitureInfo.usableColliders.Length == 0) { EditorUtils.DrawNoCollider(); return; } for (int i = 0; i < furnitureInfo.usableColliders.Length; ++i) { ShowUtil.DrawLine(); EditorUtils.DrawUsableColliderInfo(ref furnitureInfo.usableColliders[i]); } }
static void ShowCharacterEditor() { Type gameView = ShowUtil.GetGameViewType(); var window = GetWindow <CharacterEditor>("精灵编辑", true, gameView); window.Show(); }
protected override void DoubleClickedItem(int id) { if (!findResultItems.ContainsKey(id)) { SetExpanded(id, true); return; } var request = findResultItems[id].UsageElement; switch (request) { case SceneElement sceneElement: ShowUtil.ShowUsageOnScene(sceneElement.FilePath, sceneElement.FileName, sceneElement.Path, sceneElement.RootIndices); break; case PrefabElement _: case ScriptableObjectElement _: ShowUtil.ShowFileUsage(request.FilePath); break; case AnimatorElement animatorElement: var elements = animatorElement.PathElements; var range = elements.ToList().GetRange(0, myAnimatorItemIdToPathElementsCount[id]); ShowUtil.ShowAnimatorUsage(range.ToArray(), animatorElement.FilePath); break; case AnimationElement animationElement: ShowUtil.ShowAnimationEventUsage(animationElement.FilePath); break; } }
private void DrawEquipInfo() { DrawBoneWearInfo(); ShowUtil.DrawLine(); DrawOtherInfo(); ShowUtil.DrawLine(); EditorUtils.DrawApply(equip, prefab); }
public static void DrawPrefabInfo(GameObject prefab) { ShowUtil.DrawTitle("当前物体信息", Color.cyan); ShowUtil.DrawLine(); EditorGUI.indentLevel += 2; EditorGUILayout.LabelField("模型名:" + (prefab == null?"无": prefab.name), GUILayout.ExpandWidth(true)); EditorGUI.indentLevel -= 2; }
private void DrawCharatorInfo() { ShowUtil.DrawTitle("当前角色信息", Color.cyan); ShowUtil.DrawLine(); EditorGUI.indentLevel += 2; EditorGUILayout.LabelField("模型名:" + (prefab == null?"无": prefab.name), GUILayout.ExpandWidth(true)); EditorGUI.indentLevel -= 2; }
public override void OnInspectorGUI() { serializedObject.Update(); ShowUtil.ScriptTitle(target); injectionList.DoLayoutList(); serializedObject.ApplyModifiedProperties(); DrawApplyButton(); }
public static void OnModelInitializationHandler(UnityModelAndLifetime modelAndLifetime) { var modelValue = modelAndLifetime.Model; var connectionLifetime = modelAndLifetime.Lifetime; modelValue.ShowGameObjectOnScene.Advise(connectionLifetime, findUsagesResult => { if (findUsagesResult != null) { MainThreadDispatcher.Instance.Queue(() => { ExpandMinimizedUnityWindow(); EditorUtility.FocusProjectWindow(); if (findUsagesResult.IsPrefab) { ShowUtil.ShowFileUsage(findUsagesResult.FilePath); } else { ShowUtil.ShowUsageOnScene(findUsagesResult.FilePath, findUsagesResult.FileName, findUsagesResult.PathElements, findUsagesResult.RootIndices); } }); } }); modelValue.FindUsageResults.Advise(connectionLifetime, result => { if (result != null) { MainThreadDispatcher.Instance.Queue(() => { GUI.BringWindowToFront(EditorWindow.GetWindow <SceneView>().GetInstanceID()); GUI.BringWindowToFront(EditorWindow.GetWindow(typeof(SceneView).Assembly.GetType("UnityEditor.SceneHierarchyWindow")).GetInstanceID()); GUI.BringWindowToFront(EditorWindow.GetWindow(typeof(SceneView).Assembly.GetType("UnityEditor.ProjectBrowser")).GetInstanceID()); var window = FindUsagesWindow.GetWindow(result.Target); window.SetDataToEditor(result.Elements); }); } }); modelValue.ShowFileInUnity.Advise(connectionLifetime, result => { if (result != null) { MainThreadDispatcher.Instance.Queue(() => { EditorUtility.FocusProjectWindow(); ShowUtil.ShowFileUsage(result); }); } }); }
private void DrawOtherInfo() { ShowUtil.DrawTitle("其他配置", Color.yellow); EditorGUIUtility.labelWidth = 250f; EditorGUI.indentLevel += 2; furnitureInfo.furnitureType = (FurnitureType)EditorGUILayout.EnumPopup("建筑类型", furnitureInfo.furnitureType); furnitureInfo.cellWidth = EditorGUILayout.IntField("格子长度", furnitureInfo.cellWidth); furnitureInfo.cellHeight = EditorGUILayout.IntField("格子宽度", furnitureInfo.cellHeight); furnitureInfo.direction = (FurnitureDirect)EditorGUILayout.EnumPopup("默认朝向", furnitureInfo.direction); EditorGUI.indentLevel -= 2; }
private void DrawItemInfo() { DrawComponentInfo(); ShowUtil.DrawLine(); DrawItemColliderInfo(); ShowUtil.DrawLine(); DrawUseableColliderInfo(); ShowUtil.DrawLine(); DrawObstacleInfo(); ShowUtil.DrawLine(); EditorUtils.DrawApply(item, prefab); }
private void DrawSpriteInfo() { DrawComponentInfo(); ShowUtil.DrawLine(); DrawMountInfo(); ShowUtil.DrawLine(); DrawSpriteColliderInfo(); ShowUtil.DrawLine(); DrawUseableColliderInfo(); ShowUtil.DrawLine(); DrawOtherInfo(); ShowUtil.DrawLine(); EditorUtils.DrawApply(charater, prefab); }
private void DrawFurnitureInfo() { DrawComponentInfo(); ShowUtil.DrawLine(); DrawFurnitureColliderInfo(); ShowUtil.DrawLine(); DrawUsableColliderInfo(); ShowUtil.DrawLine(); DrawObstacleInfo(); ShowUtil.DrawLine(); DrawOtherInfo(); ShowUtil.DrawLine(); EditorUtils.DrawApply(furniture, prefab); }
private void OnGUI() { scrollPosition = GUILayout.BeginScrollView(scrollPosition); DrawNewScene(); ShowUtil.DrawLine(); DrawCharatorInfo(); ShowUtil.DrawLine(); if (null == spriteInfo) { DrawNoSpriteInfo(); } else { DrawSpriteInfo(); } GUILayout.EndScrollView(); }
private void DrawNewScene() { GUILayout.BeginHorizontal(); GUILayout.FlexibleSpace(); GUI.color = Color.cyan; bool newScene = GUILayout.Button("新建场景", GUILayout.Width(120f)); GUI.color = Color.white; GUILayout.EndHorizontal(); if (newScene) { GameObject oldPrefab = prefab; Release(); ShowUtil.NewScene(); SetCharacter(oldPrefab); } }
private void OnGUI() { scrollPosition = GUILayout.BeginScrollView(scrollPosition); DrawNewScene(); ShowUtil.DrawLine(); DrawPrefabInfo(); ShowUtil.DrawLine(); if (null == itemInfo) { DrawNoItemInfo(); } else { DrawItemInfo(); } GUILayout.EndScrollView(); }
private void OnGUI() { scrollPosition = GUILayout.BeginScrollView(scrollPosition); EditorUtils.DrawNewScene(prefab, Release, SetEquip); ShowUtil.DrawLine(); EditorUtils.DrawPrefabInfo(prefab); ShowUtil.DrawLine(); if (null == equipInfo) { DrawNoEquipInfo(); } else { DrawEquipInfo(); } GUILayout.EndScrollView(); }
public static void DrawNewScene(GameObject prefab, Action release, Action <GameObject> setPrefab) { GUILayout.BeginHorizontal(); GUILayout.FlexibleSpace(); GUI.color = Color.cyan; bool newScene = GUILayout.Button("新建场景", GUILayout.Width(120f)); GUI.color = Color.white; GUILayout.EndHorizontal(); if (newScene) { GameObject oldPrefab = prefab; release(); ShowUtil.NewScene(); setPrefab(oldPrefab); } }
private void DrawUseableColliderInfo() { ShowUtil.DrawTitle("代表被拾取的碰撞体信息", Color.magenta); ShowUtil.DrawLine(); GUILayout.BeginHorizontal(); GUILayout.FlexibleSpace(); if (GUILayout.Button("重置", GUILayout.Width(120f))) { EditorUtils.SetUsableCollider(ref spriteInfo.useableCollider, charater.transform, spriteInfo, 1, false); } GUILayout.EndHorizontal(); if (spriteInfo.useableCollider == null) { EditorUtils.DrawNoCollider(); return; } EditorUtils.DrawUsableColliderInfo(ref spriteInfo.useableCollider); }
private void DrawMountInfo() { ShowUtil.DrawTitle("角色挂点", Color.green); EditorGUI.indentLevel += 2; for (int i = 0; i < 4; ++i) { GUILayout.BeginHorizontal(); spriteInfo.mounts[i] = (Transform)EditorGUILayout.ObjectField(SPRITE_HH_CHS[i], spriteInfo.mounts[i], typeof(Transform), true); if (GUILayout.Button("设置", GUILayout.Width(120f))) { spriteInfo.mounts[i] = charater.transform.FindRecursive(SPRITE_HH[i]); } GUILayout.EndHorizontal(); } EditorGUI.indentLevel -= 2; }
private void DrawComponentInfo() { ShowUtil.DrawTitle("组件", Color.white); EditorGUI.indentLevel += 2; GUILayout.BeginHorizontal(); itemInfo.animation = (Animation)EditorGUILayout.ObjectField("动画", itemInfo.animation, typeof(Animation), true); if (GUILayout.Button("设置", GUILayout.Width(120f))) { itemInfo.animation = item.GetComponent <Animation>(); if (null != itemInfo.animation) { itemInfo.animation.playAutomatically = false; itemInfo.animation.clip = null; } } GUILayout.EndHorizontal(); EditorGUI.indentLevel -= 2; }
protected override void DoubleClickedItem(int id) { if (!findResultItems.ContainsKey(id)) { SetExpanded(id, true); return; } var request = findResultItems[id].UsageElement; if (request is SceneElement sceneElement) { ShowUtil.ShowUsageOnScene(sceneElement.FilePath, sceneElement.FileName, sceneElement.Path, sceneElement.RootIndices); } if (request is PrefabElement || request is ScriptableObjectElement) { ShowUtil.ShowFileUsage(request.FilePath); } }
private void DrawComponentInfo() { ShowUtil.DrawTitle("角色组件", Color.white); EditorGUI.indentLevel += 2; GUILayout.BeginHorizontal(); spriteInfo.animation = (Animation)EditorGUILayout.ObjectField("动画", spriteInfo.animation, typeof(Animation), true); if (GUILayout.Button("设置", GUILayout.Width(120f))) { spriteInfo.animation = charater.GetComponent <Animation>(); if (null != spriteInfo.animation) { spriteInfo.animation.playAutomatically = false; spriteInfo.animation.clip = null; } } GUILayout.EndHorizontal(); EditorUtils.DrawAniSet(charater, ref aniFolder); GUILayout.BeginHorizontal(); spriteInfo.cct = (CharacterController)EditorGUILayout.ObjectField("移动控制", spriteInfo.cct, typeof(CharacterController), true); if (GUILayout.Button("设置", GUILayout.Width(120f))) { spriteInfo.cct = charater.GetComponent <CharacterController>(); if (null == spriteInfo.cct) { spriteInfo.cct = charater.AddComponent <CharacterController>(); } } GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); spriteInfo.follower = (NavFollower)EditorGUILayout.ObjectField("寻路", spriteInfo.follower, typeof(NavFollower), true); if (GUILayout.Button("设置", GUILayout.Width(120f))) { spriteInfo.follower = charater.GetComponent <NavFollower>(); if (null == spriteInfo.follower) { spriteInfo.follower = charater.AddComponent <NavFollower>(); } } GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); spriteInfo.equipWear = (EquipWear)EditorGUILayout.ObjectField("换装", spriteInfo.equipWear, typeof(Replacement), true); if (GUILayout.Button("设置", GUILayout.Width(120f))) { spriteInfo.equipWear = charater.GetComponent <EquipWear>(); } GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); spriteInfo.dismemberment = (Dismemberment)EditorGUILayout.ObjectField("肢解", spriteInfo.dismemberment, typeof(Dismemberment), true); if (GUILayout.Button("设置", GUILayout.Width(120f))) { spriteInfo.dismemberment = charater.GetComponent <Dismemberment>(); } GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); spriteInfo.ragdollManager = (RagdollManagerHum)EditorGUILayout.ObjectField("布娃娃", spriteInfo.ragdollManager, typeof(RagdollManagerHum), true); if (GUILayout.Button("设置", GUILayout.Width(120f))) { spriteInfo.ragdollManager = charater.GetComponent <RagdollManagerHum>(); } GUILayout.EndHorizontal(); EditorGUI.indentLevel -= 2; }
public override void OnInspectorGUI() { serializedObject.Update(); ShowUtil.ScriptTitle(target); EditorGUILayout.Space(); EditorGUI.BeginChangeCheck(); EditorGUILayout.PropertyField(serializedObject.FindProperty("outputDir"), new GUIContent("输出目录")); EditorGUILayout.Space(); dirFolderOut = EditorGUILayout.Foldout(dirFolderOut, string.Format("基础资源 ({0})", dirs.count)); if (dirFolderOut) { dirs.DoLayoutList(); } prefabFolderOut = EditorGUILayout.Foldout(prefabFolderOut, string.Format("预制体 ({0})", prefabs.count)); if (prefabFolderOut) { prefabs.DoLayoutList(); } sceneFolderOut = EditorGUILayout.Foldout(sceneFolderOut, string.Format("场景 ({0})", scenes.count)); if (sceneFolderOut) { scenes.DoLayoutList(); } excludesFolderOut = EditorGUILayout.Foldout(excludesFolderOut, string.Format("排除 ({0})", excludes.count)); if (excludesFolderOut) { excludes.DoLayoutList(); } EditorGUILayout.Space(); EditorGUILayout.PropertyField(serializedObject.FindProperty("ignoreResPattern")); EditorGUILayout.LabelField("注:以上资源获取,排除以_开头的目录和文件"); EditorGUILayout.Space(); EditorGUILayout.PropertyField(serializedObject.FindProperty("usePathId")); if (EditorGUI.EndChangeCheck()) { serializedObject.ApplyModifiedProperties(); } BundleSet bundleSet = target as BundleSet; EditorGUILayout.Space(); GUILayout.BeginHorizontal(); if (GUILayout.Button("Gen Bundle")) { EditorApplication.delayCall += () => { if (EditorUtility.DisplayDialog("Gen Bundle", "是否确认要生成所有的AssetBundle?", "Yes", "No")) { bundleSet.Gen(genClear, genInfo); } }; } genClear = GUILayout.Toggle(genClear, "重置bundle"); genInfo = GUILayout.Toggle(genInfo, "输出信息"); GUILayout.EndHorizontal(); }
private void DrawOtherInfo() { ShowUtil.DrawTitle("其他配置", Color.yellow); equipInfo.suitTag = EditorGUILayout.IntField("套装标记(0表示非套装)", equipInfo.suitTag); equipInfo.firePoint = (Transform)EditorGUILayout.ObjectField("武器枪口", equipInfo.firePoint, typeof(Transform), true); }
public static void OnModelInitializationHandler(UnityModelAndLifetime modelAndLifetime) { var modelValue = modelAndLifetime.Model; var connectionLifetime = modelAndLifetime.Lifetime; modelValue.ShowUsagesInUnity.Advise(connectionLifetime, findUsagesResult => { if (findUsagesResult != null) { MainThreadDispatcher.Instance.Queue(() => { ExpandMinimizedUnityWindow(); EditorUtility.FocusProjectWindow(); switch (findUsagesResult) { case AnimatorFindUsagesResult animatorUsage: ShowUtil.ShowAnimatorUsage(animatorUsage.PathElements, animatorUsage.FilePath); return; case HierarchyFindUsagesResult _ when findUsagesResult.Extension.Equals(".prefab", StringComparison.OrdinalIgnoreCase): ShowUtil.ShowFileUsage(findUsagesResult.FilePath); break; case HierarchyFindUsagesResult hierarchyFindUsagesResult: ShowUtil.ShowUsageOnScene(findUsagesResult.FilePath, findUsagesResult.FileName, hierarchyFindUsagesResult.PathElements, hierarchyFindUsagesResult.RootIndices); break; case AnimationFindUsagesResult animationEventUsage: ShowUtil.ShowAnimationEventUsage(animationEventUsage.FilePath); break; default: ShowUtil.ShowFileUsage(findUsagesResult.FilePath); break; } }); } }); modelValue.SendFindUsagesSessionResult.Advise(connectionLifetime, result => { if (result != null) { MainThreadDispatcher.Instance.Queue(() => { GUI.BringWindowToFront(EditorWindow.GetWindow <SceneView>().GetInstanceID()); GUI.BringWindowToFront(EditorWindow.GetWindow(typeof(SceneView).Assembly.GetType("UnityEditor.SceneHierarchyWindow")).GetInstanceID()); GUI.BringWindowToFront(EditorWindow.GetWindow(typeof(SceneView).Assembly.GetType("UnityEditor.ProjectBrowser")).GetInstanceID()); var window = FindUsagesWindow.GetWindow(result.Target); window.SetDataToEditor(result.Elements); }); } }); modelValue.ShowFileInUnity.Advise(connectionLifetime, result => { if (result != null) { MainThreadDispatcher.Instance.Queue(() => { ExpandMinimizedUnityWindow(); EditorUtility.FocusProjectWindow(); ShowUtil.ShowFileUsage(result); }); } }); }