public override void OnInspectorGUI() { base.OnInspectorGUI(); _target = (UIMark)target; GUILayout.Label("类型 : " + _target.ComponentName); }
void OnEnable() { // Get a reference to the target script and serialize it targetScript = (UIMark)target; popComponents = new string[targetScript.Components.Count]; for (int i = 0; i < targetScript.Components.Count; i++) { popComponents[i] = targetScript.Components[i].GetType().Name; } serializedTargetScript = new SerializedObject(targetScript); }
//需求瞎变动太烦了,针对7号跑马灯进行硬编码处理:隔壁老王成功的将VIP等级提升到了15级[玩家名#vip等级] // public int GetSortKey(UIMark uiMark) { int _key = -1; if (IsSelfInfo) { _key = 0; } else { switch (uiMark) { case UIMark.DefaultMark: _key = m_InfoTable.getSort1() * 100; break; case UIMark.HeroUpgrade: _key = m_InfoTable.getSort2() * 100; break; case UIMark.HeroRecruit: _key = m_InfoTable.getSort3() * 100; break; case UIMark.RelicTreasure: _key = m_InfoTable.getSort4() * 100; break; case UIMark.Artifact: _key = m_InfoTable.getSort5() * 100; break; case UIMark.PlayerBag: _key = m_InfoTable.getSort6() * 100; break; } } if (_key > 0) { _key += m_InfoTable.getDataclass() * 100000; } //针对7号跑马灯进行特殊处理 if (m_InfoTable.GetID() == 7) { int _lv; if (int.TryParse(m_ParaArr[1], out _lv)) { _key += _lv; } } return(_key); }
//写引用文件 private static void WriteReferenceCode(RectTransform panelGo, string componentName) { UIMark[] marks = panelGo.transform.GetComponentsInChildren <UIMark>(); string referenceStr = ""; for (int i = 0; i < marks.Length; i++) { UIMark mark = marks[i]; referenceStr += "public " + mark.ComponentName + " " + mark.name + ";" + (i == marks.Length - 1 ? "" : "\r\t"); } string template = File.ReadAllText(UIReferenceTemplatePath); template = template.Replace("[ClassName]", componentName); template = template.Replace("[Reference]", referenceStr); File.WriteAllText(GenScriptFolderPath + componentName + ".Reference.cs", template, Encoding.UTF8); }
private static void CollectMark(Transform trans, ref List <_uiMark> uiMarks) { UIMark uiMark = trans.GetComponent <UIMark>(); if (uiMark != null && uiMark.IgnoreChild && uiMark.IgnoreSelf) { return; } if (uiMark == null || (uiMark != null && !uiMark.IgnoreChild)) { for (int i = 0; i < trans.childCount; i++) { CollectMark(trans.GetChild(i), ref uiMarks); } } if (uiMark != null && uiMark.IgnoreSelf) { return; } string fieldName = trans.name; if (uiMark != null) { var _mark = new _uiMark(uiMark); uiMarks.Add(_mark); } else { foreach (var component in autoAddComponents) { var com = trans.GetComponent(component); if (com != null) { var _mark = new _uiMark(fieldName, com, trans); uiMarks.Add(_mark); break; } } } }
/// <summary> /// GameEventID.UI_InterfaceChange回调,在加载或删除UI界面的时候刷新m_CurrentUI。 /// 事件抛出逻辑见UI_HomeControler.FrameDelayControl() /// </summary> private void OnInterfaceChange() { BaseUI _currentPanel = UI_HomeControler.Inst.GetCanvas2FirstChildBaseUI(); UIMark newMark; if (_currentPanel != null) { newMark = _currentPanel.UIMark; } else { newMark = UIMark.DefaultMark; } if (m_CurrentUI != newMark) { m_CurrentUI = newMark; m_EventNotice.Sort(SortHandler); } }
//查找关联引用 static void FindReference(ref Component component, GameObject clone, string prefabPath) { //处理引用关联 if (component != null) { FieldInfo[] fileFieldInfos = component.GetType().GetFields(); UIMark[] marks = clone.transform.GetComponentsInChildren <UIMark>(); foreach (FieldInfo fileFieldInfo in fileFieldInfos) { for (int j = 0; j < marks.Length; j++) { UIMark mark = marks[j]; if (mark.name == fileFieldInfo.Name) { fileFieldInfo.SetValue(component, mark.GetComponent(mark.ComponentName)); break; } } } } }
public _uiMark(UIMark uiMark) { fieldName = uiMark.FieldName; component = uiMark.CurComponent; transform = uiMark.transform; }