static public void AdjustNodeData(GameObject go, Vector3 pos, Vector4 offest, Vector2 size, UIAncherType ancher = UIAncherType.MiddleCenter) { var tran = GK.GetOrAddComponent <RectTransform>(go); if (null != tran) { tran.sizeDelta = size; tran.pivot = new Vector2(0.5f, 0.5f); tran.localPosition = Vector3.zero; if (UIAncherType.MiddleCenter == ancher) { tran.anchorMax = new Vector2(0.5f, 0.5f); tran.anchorMin = new Vector2(0.5f, 0.5f); float x = pos.x - (UIController.width - size.x) * 0.5f; float y = UIController.height * 0.5f - (UIController.height - pos.y - size.y * 0.5f); tran.localPosition = new Vector3(x, y, 0); } else if (UIAncherType.FullScree == ancher) { tran.anchorMax = new Vector2(1, 1); tran.anchorMin = new Vector2(0, 0); tran.offsetMin = new Vector2(offest.x, offest.y); tran.offsetMax = new Vector2(offest.z, offest.w); } } }
/// <summary> /// 添加连线 /// </summary> /// <param name="linkId">连线GUID</param> /// <param name="nextNode">连接到的节点</param> public void AddLink(int linkId, GKToyNode nextNode, int height, string parmKey = "") { bool vertical = false; Vector2 src = new Vector2(outputRect.x + outputRect.width, outputRect.y + outputRect.height * 0.5f); Vector2 dest = Vector2.zero; // 参数链接. if (!string.IsNullOrEmpty(parmKey) && nextNode.parmRect.ContainsKey(parmKey)) { dest = new Vector2(nextNode.parmRect[parmKey].rect.x, nextNode.parmRect[parmKey].rect.y + nextNode.parmRect[parmKey].rect.height * 0.5f); } // 节点链接. else { dest = new Vector2(nextNode.inputRect.x, nextNode.inputRect.y + nextNode.inputRect.height * 0.5f); } if (10 <= (int)nextNode.nodeType) { otherLinks.Add(new Link(linkId, GK.ClacLinePoint(src, dest, out vertical, height), vertical, id, nextNode.id, parmKey)); } else { links.Add(new Link(linkId, GK.ClacLinePoint(src, dest, out vertical, height), vertical, id, nextNode.id, parmKey)); } LinkUpdate(); }
static public T LoadPanel <T>(string p = "Panels/") where T : MonoBehaviour { var type = typeof(T); string path = p + type.Name; GameObject obj = null; if (!obj) { obj = GK.TryLoadGameObject(path); } if (!obj) { Debug.LogError("Error load UI panle " + type.Name); return(null); } var c = obj.GetComponent <T>(); if (!c) { Debug.LogError("Error GetComponent from UI Panel " + type.Name); return(null); } GK.SetParent(c.gameObject, instance.panelGroup.gameObject, false); return(c); }
static public void ClosePanel <T>(T panel) where T : MonoBehaviour { if (panel != null) { GK.Destroy(panel.gameObject); } }
// 创建实例. public override GKToyBaseOverlord _CreateData(string path) { // 生成数据源. var obj = ScriptableObject.CreateInstance <GKToyExternalData>(); GKToyData tData = new GKToyData(); obj.data = tData.Clone() as GKToyData; GKEditor.CreateAsset(obj, path); var externalData = AssetDatabase.LoadMainAssetAtPath(path) as GKToyExternalData; if (null == externalData) { return(null); } string myName = Path.GetFileNameWithoutExtension(path); // 创建宿主. GameObject go = new GameObject(); var tmpOverload = GK.GetOrAddComponent <GKToyBaseOverlord>(go); tmpOverload.internalData = externalData; tmpOverload.name = myName; tmpOverload.internalData.data.name = myName; // 初始化首次数据. GKToyMakerChapterInfo.Create(this, position.min, ToyMakerBase._minWidth, ToyMakerBase._minHeight, _GetTaskLocalization("Chapter Infomation"), tmpOverload, go); return(tmpOverload); }
static void _ConvertBoxCollider2Dto3D(GameObject o) { o.layer = GK.LayerId("UI"); var rb = o.GetComponent <Rigidbody>(); if (rb) { GK.Destroy(rb); } var co = o.GetComponent <BoxCollider2D>(); if (co) { Vector4 v4 = new Vector4(co.size.x, co.size.y, co.offset.x, co.offset.y); GK.Destroy(co); o.AddComponent <BoxCollider>(); o.GetComponent <BoxCollider>().size = new Vector3(v4.x, v4.y, 1); o.GetComponent <BoxCollider>().center = new Vector3(v4.z, v4.w, 1); } foreach (Transform t in o.transform) { _ConvertBoxCollider2Dto3D(t.gameObject); } }
// Create UI node. static public GameObject CreateNode(string name, GameObject parent, string layerName) { GameObject go = new GameObject(name); GK.SetParent(go, parent, false); go.layer = GK.LayerId(layerName); return(go); }
public void Save() { if (sceneObj) { GKEditor.CreateOrReplacePrefab(path, sceneObj); AssetDatabase.SaveAssets(); GK.Destroy(sceneObj); sceneObj = null; } }
public GameObject GetOrAddGroup(string name) { var o = GK.FindChild(gameObject, name, true, false); if (!o) { o = new GameObject(name); GK.SetParent(o, gameObject, false); o.layer = GK.LayerId("UI"); } return(o); }
static void _Init(T instance) { if (instance) { instance.gameObject.SetActive(true); RectTransform rt = GK.GetOrAddComponent <RectTransform>(instance.gameObject); rt.sizeDelta = Vector2.zero; rt.anchoredPosition = Vector3.zero; UIController.AddUI(instance); instance.OnOpen(); } }
public void Load() { GameObject go = GKEditor.LoadGameObject(path, true); sceneObj = go; GK.SetParent(go, UIController.instance.GetOrAddGroup("UIRoot"), false); var tran = go.GetComponent <RectTransform>(); if (null != tran) { tran.localPosition = Vector3.zero; tran.sizeDelta = Vector2.zero; } Selection.activeGameObject = go; }
public static void ExportTaskServerData() { ToyMakerTaskSettings.ToyMakerTask exportSetting = GK.LoadResource <ToyMakerTaskSettings>("Settings/ToyMakerTaskSettings").toyMakerBase; DirectoryInfo directoryInfo = new DirectoryInfo(exportSetting._defaultOverlordPath); FileInfo[] files = directoryInfo.GetFiles("*.asset", SearchOption.TopDirectoryOnly); GKToyExternalData externalData; for (int i = 0; i < files.Length; i++) { externalData = AssetDatabase.LoadMainAssetAtPath(string.Format("{0}/{1}", exportSetting._defaultOverlordPath, files[i].Name)) as GKToyExternalData; if (null != externalData) { _ExportGameDataByMenuItem(2, exportSetting, externalData.data); } } }
public void ResetDataArray <DATA_TYPE>(int length, ref DATA_TYPE[] dst) where DATA_TYPE : new() { var dt = typeof(DATA_TYPE); var N = length; var newArr = new DATA_TYPE[N]; for (int i = 0; i < N; i++) { var o = GK.SafeGetElement(dst, i); if (o == null) { o = new DATA_TYPE(); } newArr[i] = o; dt.GetField("id").SetValue(o, i); } dst = newArr; }
/// <summary> /// 更新单根连线 /// </summary> /// <param name="linkId">要更新连线的Id</param> public void UpdateLink(Link link, GKToyNode nextNode, int height) { bool vertical = false; Vector2 src = new Vector2(outputRect.x + outputRect.width, outputRect.y + outputRect.height * 0.5f); Vector2 dest = Vector2.zero; // 参数链接. if (!string.IsNullOrEmpty(link.parmKey) && nextNode.parmRect.ContainsKey(link.parmKey)) { dest = new Vector2(nextNode.parmRect[link.parmKey].rect.x, nextNode.parmRect[link.parmKey].rect.y + nextNode.parmRect[link.parmKey].rect.height * 0.5f); } // 节点链接. else { dest = new Vector2(nextNode.inputRect.x, nextNode.inputRect.y + nextNode.inputRect.height * 0.5f); } link.points = new List <Vector2>(GK.ClacLinePoint(src, dest, out vertical, height)); link.isFirstVertical = vertical; }
public void ResetDataArray <ENUM_TYPE, DATA_TYPE>(ref DATA_TYPE[] dst) where DATA_TYPE : new() { var dt = typeof(DATA_TYPE); var values = GK.EnumValues <ENUM_TYPE>(); var N = values.Length; var newArr = new DATA_TYPE[N]; for (int i = 0; i < N; i++) { var o = GK.SafeGetElement(dst, i); if (o == null) { o = new DATA_TYPE(); } newArr[i] = o; var t = values[i]; dt.GetField("type").SetValue(o, t); } dst = newArr; }
public override void Execute(Map.World world) { Logger.Debug(" Death Of King Event Path 2"); //Берём участников сцены var LeoricGhost = world.GetActorBySNO(5365); var GhostKnights = world.GetActorsBySNO(4182); var LachdananGhost = world.GetActorBySNO(4183); var SwordPlace = world.GetActorBySNO(163449); TickTimer Timeout = new SecondsTickTimer(world.Game, 23f); var ListenerKingSkeletons = System.Threading.Tasks.Task <bool> .Factory.StartNew(() => WaitToSpawn(Timeout)); ListenerKingSkeletons.ContinueWith(delegate { LeoricGhost.Destroy(); LachdananGhost.Destroy(); foreach (var GK in GhostKnights) { GK.Destroy(); } }); }
GameObject _CreateDialogueData(string path, int taskId, string dfgType) { if (!Directory.Exists(path)) { Directory.CreateDirectory(path); } // 生成数据源. var obj = ScriptableObject.CreateInstance <GKToyExternalData>(); GKToyData tData = new GKToyData(); obj.data = tData.Clone() as GKToyData; string assetPath = string.Format("{0}{1}_{2}.Asset", path, dfgType, taskId); GKEditor.CreateAsset(obj, assetPath); var externalData = AssetDatabase.LoadMainAssetAtPath(assetPath) as GKToyExternalData; if (null == externalData) { return(null); } string myName = string.Format("{0}_{1}", dfgType, taskId); // 创建宿主. GameObject go = new GameObject(); var tmpOverload = GK.GetOrAddComponent <GKToyBaseOverlord>(go); tmpOverload.internalData = externalData; tmpOverload.name = myName; tmpOverload.internalData.data.name = myName; // 初始化首次数据. GKToyNode node = new GKToyStart(_GenerateGUID(tmpOverload.internalData.data.nodeGuid++)); Type type = node.GetType(); node.className = string.Format("{0}.{1}", type.Namespace, type.Name); node.pos.x = (_contentScrollPos.x + ToyMakerBase._minWidth * 0.5f) / Scale; node.pos.y = (_contentScrollPos.y + ToyMakerBase._minHeight * 0.5f) / Scale; node.id = node.ID; node.nodeType = NodeType.Action; node.name = "开始-1"; node.Init(tmpOverload); node.comment = ""; tmpOverload.internalData.data.nodeLst.Add(node.id, node); node = new GKToyEnd(_GenerateGUID(_GenerateGUID(tmpOverload.internalData.data.nodeGuid++))); type = node.GetType(); node.className = string.Format("{0}.{1}", type.Namespace, type.Name); node.pos.x = -10; node.pos.y = -10; node.id = node.ID; node.nodeType = NodeType.Action; node.name = "结束-2"; node.Init(tmpOverload); node.comment = ""; tmpOverload.internalData.data.nodeLst.Add(node.id, node); tmpOverload.Save(); tmpOverload.Backup(); string prefabPath = string.Format("{0}{1}_{2}.prefab", path, dfgType, taskId); GameObject prefab; if (!File.Exists(prefabPath)) { prefab = PrefabUtility.CreatePrefab(prefabPath, go); } else { prefab = AssetDatabase.LoadAssetAtPath <GameObject>(prefabPath); prefab = PrefabUtility.ReplacePrefab(go, prefab); } DestroyImmediate(go); return(prefab); }
public GameObject TryFindChild(string name) { return(GK.FindChild(this.gameObject, name, true)); }
public void ClearHUD() { GK.DestroyAllChildren(hudRoot); }
static public GKUIEventTriggerListener Get(GameObject go) { GKUIEventTriggerListener listener = GK.GetOrAddComponent <GKUIEventTriggerListener>(go); return(listener); }