static public GameObject FindItem(GameObject a_obj, GameObjectItem a_item) { GameObject returnObj = null; FindItemRecursive(a_obj, ref returnObj, a_item); return(returnObj); }
public PrefabItem(string name, Action <Vector3> droppedCallback, IItemID id, GameObjectItem prefab) { Name = name; ID = id; this.droppedCallback = droppedCallback; this.prefab = prefab; }
public void Add(string name, GameObjectItem gameObject) { if (!itemList.ContainsKey(name)) { itemList.Add(name, gameObject); } }
static GameObject FindItemRecursive(GameObject a_obj, ref GameObject a_returnObj, GameObjectItem a_item) { if(a_returnObj) return a_returnObj; if(a_obj) { switch(a_item) { case TrafficSystemGameUtils.GameObjectItem.RIGIDBODY: { if(a_obj.rigidbody) a_returnObj = a_obj; } break; case TrafficSystemGameUtils.GameObjectItem.RENDERER: { if(a_obj.renderer) a_returnObj = a_obj; } break; case TrafficSystemGameUtils.GameObjectItem.COLLIDER: { if(a_obj.collider) a_returnObj = a_obj; } break; case TrafficSystemGameUtils.GameObjectItem.NAV_MESH_AGENT: { if(a_obj.GetComponent<NavMeshAgent>()) a_returnObj = a_obj; } break; case TrafficSystemGameUtils.GameObjectItem.ANIMATOR: { if(a_obj.GetComponent<Animator>()) a_returnObj = a_obj; } break; case TrafficSystemGameUtils.GameObjectItem.TRAFFIC_SYSTEM_PIECE: { if(a_obj.GetComponent<TrafficSystemPiece>()) a_returnObj = a_obj; } break; } if(!a_returnObj) { for(int cIndex = 0; cIndex < a_obj.transform.childCount; cIndex++) { Transform child = a_obj.transform.GetChild(cIndex); if(child.gameObject && !a_returnObj) a_returnObj = FindItemRecursive(child.gameObject, ref a_returnObj, a_item); } } } return a_returnObj; }
private void gameObjectDisplay() { GUILayout.BeginHorizontal(); GUILayout.Label("", GUILayout.Width(this.offsetSize * this.childLevel)); if (this.go.transform.childCount > 0 && GUILayout.Button(this.go.transform.childCount.ToString(), GUILayout.Width(30))) { this.toggleChild(); } if (GUILayout.Button(this.go.transform.name)) { if (GameObjectItem.lastSelected != null) { lastSelected.isSelected = false; } this.isSelected = true; GameObjectItem.lastSelected = this; this.inspector.setGameObject(this.go); } GUILayout.EndHorizontal(); }
private GameObjectItem <T> GetObjectItem <T>(string key) where T : Component { GameObjectItem <T> objItem = null; if (_dict.ContainsKey(key)) { objItem = _dict[key] as GameObjectItem <T>; } return(objItem); }
private void AddChildrenRecursive(GameObjectItem parentItem) { for (var i = 0; i < parentItem.gameObject.transform.childCount; i++) { var child = parentItem.gameObject.transform.GetChild(i); var childItem = new GameObjectItem(child.gameObject); parentItem.AddChild(childItem); AddChildrenRecursive(childItem); } }
private GameObjectItem <T> GetObjectItem <T>(string key, GameObject clone, Transform parent) where T : Component { GameObjectItem <T> objItem; if (_dict.ContainsKey(key)) { objItem = _dict[key] as GameObjectItem <T>; } else { objItem = new GameObjectItem <T>(clone, parent); } return(objItem); }
public static GameObject CreatePrefab(GameObject parent, GameObjectItem item) { GameObject go = loadPrefab(item.prefab); Debug.Log(item.name); go.name = item.name; if (!string.IsNullOrEmpty(item.sprite)) { var sprite = Resources.Load(item.sprite, typeof(Sprite)) as Sprite; go.GetComponent <Image>().sprite = sprite; } if (!string.IsNullOrEmpty(item.text)) { go.GetComponentInChildren <Text>().text = item.text; } if (item.fontSize != 0) { go.GetComponentInChildren <Text>().fontSize = item.fontSize; } if (!string.IsNullOrEmpty(item.color)) { Color fontColor = new Color(255, 0, 0); if (item.color == "red") { fontColor = new Color(255, 0, 0); } go.GetComponentInChildren <Text>().color = fontColor; } if (!(item.x == 0 && item.y == 0)) { go.transform.position = new Vector3(item.x, item.y); } if (item.width > 0) { go.GetComponent <RectTransform>().sizeDelta = new Vector2(item.width, item.height); } go.transform.SetParent(parent.transform, false); return(go); }
private void AddSiblings(GameObjectItem item) { var parent = item.gameObject.transform.parent; if (parent == null) { var rootObjects = item.gameObject.scene.GetRootGameObjects(); foreach (var sceneRootObject in rootObjects) { var sibling = sceneRootObject; if (sibling != item.gameObject) { var siblingItem = new GameObjectItem(sibling); // siblingItem.dim = true; item.parent.AddChild(siblingItem); AddChildrenRecursive(siblingItem); } } } else { for (var i = 0; i < parent.childCount; i++) { var sibling = parent.GetChild(i).gameObject; if (sibling != item.gameObject) { var siblingItem = new GameObjectItem(sibling); // siblingItem.dim = true; item.parent.AddChild(siblingItem); AddChildrenRecursive(siblingItem); } } } }
static GameObject FindParentItemRecursive(GameObject a_obj, ref GameObject a_returnObj, GameObjectItem a_item) { if(a_returnObj) return a_returnObj; if(a_obj) { switch(a_item) { case TrafficSystemGameUtils.GameObjectItem.RIGIDBODY: { if(a_obj.rigidbody) a_returnObj = a_obj; } break; case TrafficSystemGameUtils.GameObjectItem.RENDERER: { if(a_obj.renderer) a_returnObj = a_obj; } break; case TrafficSystemGameUtils.GameObjectItem.COLLIDER: { if(a_obj.collider) a_returnObj = a_obj; } break; case TrafficSystemGameUtils.GameObjectItem.NAV_MESH_AGENT: { if(a_obj.GetComponent<NavMeshAgent>()) a_returnObj = a_obj; } break; case TrafficSystemGameUtils.GameObjectItem.ANIMATOR: { if(a_obj.GetComponent<Animator>()) a_returnObj = a_obj; } break; case TrafficSystemGameUtils.GameObjectItem.TRAFFIC_SYSTEM_PIECE: { if(a_obj.GetComponent<TrafficSystemPiece>()) a_returnObj = a_obj; } break; case TrafficSystemGameUtils.GameObjectItem.TRAFFIC_SYSTEM_INTERSECTION: { if(a_obj.GetComponent<TrafficSystemIntersection>()) a_returnObj = a_obj; } break; } if(!a_returnObj) { if(a_obj.transform.parent) a_returnObj = FindParentItemRecursive(a_obj.transform.parent.gameObject, ref a_returnObj, a_item); } } return a_returnObj; }
public static GameObject FindParentItem(GameObject a_obj, GameObjectItem a_item) { GameObject returnObj = null; FindParentItemRecursive( a_obj, ref returnObj, a_item ); return returnObj; }
static GameObject FindParentItemRecursive(GameObject a_obj, ref GameObject a_returnObj, GameObjectItem a_item) { if (a_returnObj) { return(a_returnObj); } if (a_obj) { switch (a_item) { case TrafficSystemGameUtils.GameObjectItem.RIGIDBODY: { if (a_obj.GetComponent <Rigidbody>()) { a_returnObj = a_obj; } } break; case TrafficSystemGameUtils.GameObjectItem.RENDERER: { if (a_obj.GetComponent <Renderer>()) { a_returnObj = a_obj; } } break; case TrafficSystemGameUtils.GameObjectItem.COLLIDER: { if (a_obj.GetComponent <Collider>()) { a_returnObj = a_obj; } } break; case TrafficSystemGameUtils.GameObjectItem.NAV_MESH_AGENT: { if (a_obj.GetComponent <NavMeshAgent>()) { a_returnObj = a_obj; } } break; case TrafficSystemGameUtils.GameObjectItem.ANIMATOR: { if (a_obj.GetComponent <Animator>()) { a_returnObj = a_obj; } } break; case TrafficSystemGameUtils.GameObjectItem.TRAFFIC_SYSTEM_PIECE: { if (a_obj.GetComponent <TrafficSystemPiece>()) { a_returnObj = a_obj; } } break; case TrafficSystemGameUtils.GameObjectItem.TRAFFIC_SYSTEM_INTERSECTION: { if (a_obj.GetComponent <TrafficSystemIntersection>()) { a_returnObj = a_obj; } } break; } if (!a_returnObj) { if (a_obj.transform.parent) { a_returnObj = FindParentItemRecursive(a_obj.transform.parent.gameObject, ref a_returnObj, a_item); } } } return(a_returnObj); }
public void Equipped(GameObject holder) { spawnedPrefab = Instantiate(prefab, holder.transform); }
protected override TreeViewItem BuildRoot() { var root = new TreeViewItem(-1, -1, "Root"); root.children = new List <TreeViewItem>(); if (targets != null && targets.Length == 1) { var target = targets[0]; if (target == null) { parentWindow.Close(); return(root); } // Build the minimal transform hierarchy var parents = new List <GameObject>(); var currentParent = target; while (currentParent != null) { parents.Add(currentParent); currentParent = currentParent.transform.parent.AsUnityNull()?.gameObject; } parents.Reverse(); var rootTransform = parents[0]; var scene = rootTransform.gameObject.scene; var sceneItem = new SceneItem(scene); root.AddChild(sceneItem); Item currentParentItem = sceneItem; foreach (var parent in parents) { var parentItem = new GameObjectItem(parent); currentParentItem.AddChild(parentItem); currentParentItem = parentItem; } AddChildrenRecursive((GameObjectItem)currentParentItem); // AddSiblings((GameObjectItem)currentParentItem); } else { var prefabStage = PrefabStageUtility.GetCurrentPrefabStage(); if (prefabStage != null) { // Build the prefab stage hierarchy var prefabRoot = prefabStage.prefabContentsRoot; var prefabRootItem = new GameObjectItem(prefabRoot); var stageItem = new PrefabStageItem(prefabStage); AddChildrenRecursive(prefabRootItem); stageItem.AddChild(prefabRootItem); root.AddChild(stageItem); } else { // Build the full scene hierarchy for (var i = 0; i < SceneManager.sceneCount; i++) { var scene = SceneManager.GetSceneAt(i); if (!scene.IsValid()) { continue; } var sceneItem = new SceneItem(scene); if (scene.isLoaded) { foreach (var sceneRootGameObject in scene.GetRootGameObjects()) { var sceneRootGameObjectItem = new GameObjectItem(sceneRootGameObject); AddChildrenRecursive(sceneRootGameObjectItem); sceneItem.AddChild(sceneRootGameObjectItem); } } root.AddChild(sceneItem); } } } // Override with search if needed if (hasSearch) { var searchRoot = new TreeViewItem(-1, -1, "Results"); var searchResults = new List <TreeViewItem>(); var treeViewItemStack = new Stack <TreeViewItem>(); treeViewItemStack.Push(root); while (treeViewItemStack.Count > 0) { var treeViewItem = treeViewItemStack.Pop(); if (treeViewItem.children != null) { foreach (var child in treeViewItem.children) { if (child != null) { if (DoesItemMatchSearch(child, searchString)) { searchResults.Add(child); } treeViewItemStack.Push(child); } } } } foreach (var searchResult in searchResults) { searchResult.children = null; } searchResults.Sort((x, y) => SearchUtility.Relevance(searchString, x.displayName).CompareTo(SearchUtility.Relevance(searchString, y.displayName))); searchRoot.children = searchResults; root = searchRoot; } SetupDepthsFromParentsAndChildren(root); hoveredItem = null; return(root); }
public static void ShowBattlePanel(GameObject gameObject) { var battlePanel = GameObject.Find("BattlePanel"); if (battlePanel == null) { battlePanel = Game.CreatePrefab(gameObject, new GameObjectItem { name = "BattlePanel", prefab = "Prefabs/Panel", sprite = "hero/group/0界面底板" }); battlePanel.GetComponentInChildren <Image>().color = new Color(147, 175, 191); GameObject back = Game.CreatePrefab(battlePanel, new GameObjectItem { name = "返回按钮", width = 54, height = 54, prefab = "Prefabs/Button", type = 1, x = -600, y = 350, fontSize = 30, sprite = "0返回按钮", }); back.GetComponent <Button>().onClick.AddListener(() => { GameObject m = GameObject.Find("BattlePanel"); GameObject.Destroy(m); }); User.configs = User.HttpSend <List <Value> >("/config/enum", new { }); User.heros = User.HttpSend <List <Hero> >("/hero/enter", new { }); Debug.Log(User.heros.Count); GameObject battleGo = Game.CreatePrefab(battlePanel, new GameObjectItem { name = "阵容保存按钮", text = "保存", width = 80, height = 60, prefab = "Prefabs/Button", type = 1, x = -600, y = 220, fontSize = 30 }); battleGo.GetComponent <Button>().onClick.AddListener(ChooseClick); var bList = new List <GameObjectItem>(); for (int i = 0; i < battleList.Count; i++) { var position = new GameObjectItem() { x = battleList[i].x, y = battleList[i].y }; position.name = i.ToString(); var has = User.heros.Find(r => { return(r.GetValueByName("出战") == i + 1); } ); position.text = has == null ? "+" : User.GetConfig(has.heroNo).name; position.width = 133;; position.height = 153; position.prefab = "Prefabs/Button"; position.sprite = "hero/group/1阵容按钮"; position.fontSize = has == null ? 80 : 30; position.color = has == null ? "" : "red"; GameObject item = Game.CreatePrefab(battlePanel, position); HeroHelper.AddChooseListener(gameObject, item, (GameObject start, GameObject end) => { Debug.Log("choose"); //先检查 var endHero = User.heros.Find(r => r.id == end.name); var goAttack = endHero.GetValueByName("出战"); if (goAttack > 0) { Game.ChangeText("BattlePanel/" + (goAttack - 1).ToString() + "/Text", "+", "", 80); endHero.SetValueByName("出战", 0); } var startHero = User.heros.Find(r => r.GetValueByName("出战") == long.Parse(start.name) + 1); if (startHero != null) { var startHeroPosition = startHero.GetValueByName("出战"); Game.ChangeText("BattlePanel/" + (startHeroPosition - 1).ToString() + "/Text", "+", "", 80); startHero.SetValueByName("出战", 0); } //更换 endHero.SetValueByName("出战", long.Parse(start.name) + 1); Game.ChangeText("BattlePanel/" + start.name + "/Text", User.GetConfig(endHero.heroNo).name, "red", 30); }); } //创建几个按钮 // GameObject skillGo = Game.CreatePrefab(battlePanel, new GameObjectItem // { // name = "特技按钮", // text = "特技", // width = 100, // height = 60, // prefab = "Prefabs/Button", // type = 1, // x = 100, // y = 320, // fontSize = 30, // }); // // skillGo.GetComponent<Button>().onClick.AddListener(() => // { // // }); var skillList = new List <GameObjectItem>() { new GameObjectItem() { x = 150, y = 200 }, new GameObjectItem() { x = 250, y = 200 }, new GameObjectItem() { x = 350, y = 200 }, new GameObjectItem() { x = 450, y = 200 }, new GameObjectItem() { x = 550, y = 200 }, }; for (int i = 0; i < skillList.Count; i++) { skillList[i].name = "skill" + i.ToString(); skillList[i].text = "+"; skillList[i].width = 113; skillList[i].height = 113; skillList[i].prefab = "Prefabs/Button"; skillList[i].fontSize = 50; skillList[i].sprite = "hero/group/2特技框"; Game.CreatePrefab(battlePanel, skillList[i]).GetComponent <Button>().onClick.AddListener(() => { }); } } }
static GameObject FindItemRecursive(GameObject a_obj, ref GameObject a_returnObj, GameObjectItem a_item) { if (a_returnObj) { return(a_returnObj); } if (a_obj) { switch (a_item) { case TrafficSystemGameUtils.GameObjectItem.RIGIDBODY: { if (a_obj.GetComponent <Rigidbody>()) { a_returnObj = a_obj; } } break; case TrafficSystemGameUtils.GameObjectItem.RENDERER: { if (a_obj.GetComponent <Renderer>()) { a_returnObj = a_obj; } } break; case TrafficSystemGameUtils.GameObjectItem.COLLIDER: { if (a_obj.GetComponent <Collider>()) { a_returnObj = a_obj; } } break; case TrafficSystemGameUtils.GameObjectItem.NAV_MESH_AGENT: { if (a_obj.GetComponent <NavMeshAgent>()) { a_returnObj = a_obj; } } break; case TrafficSystemGameUtils.GameObjectItem.ANIMATOR: { if (a_obj.GetComponent <Animator>()) { a_returnObj = a_obj; } } break; case TrafficSystemGameUtils.GameObjectItem.TRAFFIC_SYSTEM_PIECE: { if (a_obj.GetComponent <TrafficSystemPiece>()) { a_returnObj = a_obj; } } break; } if (!a_returnObj) { for (int cIndex = 0; cIndex < a_obj.transform.childCount; cIndex++) { Transform child = a_obj.transform.GetChild(cIndex); if (child.gameObject && !a_returnObj) { a_returnObj = FindItemRecursive(child.gameObject, ref a_returnObj, a_item); } } } } return(a_returnObj); }
public static void Create(GameObject parent) { parent = GameObject.Find("Top"); var bg = Game.CreatePrefab(parent, new GameObjectItem { name = "Fight", width = 1334, height = 750, prefab = "Prefabs/bg", sprite = "bg/8战斗背景", }); GameObject back = Game.CreatePrefab(bg, new GameObjectItem { name = "返回按钮", width = 54, height = 54, prefab = "Prefabs/Button", type = 1, x = -600, y = 350, fontSize = 30, sprite = "0返回按钮", }); back.GetComponent <Button>().onClick.AddListener(() => { GameObject m = GameObject.Find("Fight"); GameObject.Destroy(m); }); var npcs = new List <string>() { "player/8/player8 00001", "player/9/player9 00001", "player/11/player11 00001", "player/15/player15 00001", "player/8/player8 00001", "player/9/player9 00001" }; for (int i = 0; i < Battle.battleList.Count; i++) { var goItem = new GameObjectItem() { name = i.ToString(), x = Battle.battleList[i].x, y = Battle.battleList[i].y + 50, width = 250, height = 200, prefab = "Prefabs/fight/NPC", sprite = npcs[i] }; Game.CreatePrefab(bg, goItem); } for (int i = 0; i < 5; i++) { var goItem = new GameObjectItem() { name = "skill" + i.ToString(), x = -580 + 120 * i, y = -300, width = 113, height = 113, prefab = "Prefabs/fight/GO", sprite = "hero/group/2特技框" }; Game.CreatePrefab(bg, goItem); } //创建BOSS var boss = new GameObjectItem() { name = "boss", x = 400, y = 0, width = 500, height = 500, prefab = "Prefabs/fight/GO", sprite = "player/16/enemy_0003 00001" }; Game.CreatePrefab(bg, boss); var bossBlood = new GameObjectItem() { name = "bossBlood", x = 350, y = 330, prefab = "Prefabs/fight/BossBlood", }; Game.CreatePrefab(bg, bossBlood); var bossItems = new List <string>() { "手", "棍棒", "腿", }; for (int i = 0; i < bossItems.Count; i++) { var bossItem = new GameObjectItem() { name = bossItems[i], x = 570, y = 280 - i * 40, prefab = "Prefabs/fight/BossItem", }; Game.CreatePrefab(bg, bossItem); Game.ChangeText("Fight/" + bossItems[i] + "/Text", bossItems[i]); } for (int i = 0; i < 3; i++) { var goItem = new GameObjectItem() { name = "npc" + i.ToString(), x = -Battle.battleList[i].x, y = -Battle.battleList[i].y - 100, width = 250, height = 200, prefab = "Prefabs/fight/NPC", sprite = npcs[i] }; var npc = Game.CreatePrefab(bg, goItem); npc.GetComponent <RectTransform>().SetPositionAndRotation(npc.transform.position, new Quaternion(0, 180, 0, 0)); } Sequence seq = DOTween.Sequence(); List <Tween> ts = new List <Tween>(); Attack(seq, "0", "npc1"); Attack(seq, "1", "npc2"); }
private void GameObjectRowContentGUI(Rect rowPosition, Rect contentPosition, GameObjectItem item, RowGUIArgs args) { var openPrefabButtonPosition = new Rect ( rowPosition.xMax - HierarchyStyles.openPrefabButton.fixedWidth - HierarchyStyles.openPrefabButton.margin.right, rowPosition.y, HierarchyStyles.openPrefabButton.fixedWidth, HierarchyStyles.openPrefabButton.fixedHeight ); if (item.canOpenPrefab) { if (GUI.Button(openPrefabButtonPosition, GUIContent.none, HierarchyStyles.openPrefabButton)) { GameObjectOperations.OpenPrefab(item.gameObject); parentWindow?.Close(); GUIUtility.ExitGUI(); return; } } contentPosition.xMax = openPrefabButtonPosition.xMin; var iconPosition = new Rect ( contentPosition.x, contentPosition.y, IconSize.Small, IconSize.Small ); if (PeekPlugin.Configuration.enablePreviewIcons && PreviewUtility.TryGetPreview(item.gameObject, out var preview) && preview != null) { GUI.DrawTexture(iconPosition, preview); } else if (item.icon != null) { GUI.DrawTexture(iconPosition, item.icon); } if (item.overlay != null) { GUI.DrawTexture(iconPosition, item.overlay); } var labelPosition = contentPosition; labelPosition.xMin += iconPosition.width; labelPosition.xMin += 2; var label = item.displayName; if (hasSearch) { label = SearchUtility.HighlightQuery(label, searchString); } if (e.type == EventType.Repaint) { item.style.Draw(labelPosition, label, false, false, args.selected, args.focused); } var target = item.gameObject; if (target == null) { return; } Object[] targets; if (args.selected) { targets = GetSelection().Where(i => FindItem(i, rootItem) is GameObjectItem).Select(i => FindGameObjectItem(i).gameObject).ToArray(); } else { targets = new[] { target.gameObject }; } TreeViewToolbars.Draw(false, toolbarControlProvider, target, targets, args.selected, args.label, contentPosition, rowPosition, HasFocus()); }