private void HandleJsonForTrigger() { for (int i = 0; i < components.Count; i++) { if (components[i].name == "Trigger--D[0]") { Type t = components[i].GetType(); BundleEventTrigger type = (BundleEventTrigger)components[i].gameObject.GetComponent(t); type.triggers = GetJsonForTrigger("Trigger--D[0]"); } } }
/// <summary> /// 生成prefab物体上所有BundleEventTrigger组件对应的配置信息 /// 保存到一个json文件一起打入Bundle /// </summary> private void GenerateBundleTriggerSummary() { //获取所有BundleEventTrigger组件 BundleEventTriggerDesigner[] bundleEventTriggers = prefabs.GetComponentsInChildren <BundleEventTriggerDesigner>(); allTriggerToDesingerConfig.allJson = new List <triggerToDesingerJson>(); //给持续数据赋值以及修改物体标号 for (int i = 0; i < bundleEventTriggers.Length; i++) { //标记设计师 GameObject desingerObj = bundleEventTriggers[i].gameObject; desingerObj.name += string.Format("--D[{0}]", i);//Desinger EditorUtility.SetDirty(desingerObj); triggerToDesingerJson temp = new triggerToDesingerJson(); //增加触发器 BundleEventTrigger bet = desingerObj.AddComponent <BundleEventTrigger>(); //赋值形成可预览的物体 bet.triggers = bundleEventTriggers[i].bundleEventTriggerInfos; //给设计师中所有被操作物体做标记 if (bundleEventTriggers[i].bundleEventTriggerInfos != null && bundleEventTriggers[i].bundleEventTriggerInfos.Count > 0) { for (int j = 0; j < bundleEventTriggers[i].bundleEventTriggerInfos.Count; j++) { //属于设计师名 + 标号 string str = bundleEventTriggers[i].bundleEventTriggerInfos[j].target.name; //如果有重复事件添加在同一个物体上,Desinger只需要标记一次 if (str.Contains("--D[")) { bundleEventTriggers[i].bundleEventTriggerInfos[j].target.name += string.Format("->{0}[{1}]", bundleEventTriggers[i].bundleEventTriggerInfos[j].method.name, j); } else { bundleEventTriggers[i].bundleEventTriggerInfos[j].target.name += string.Format("{0}->{1}[{2}]", desingerObj.name, bundleEventTriggers[i].bundleEventTriggerInfos[j].method.name, j); } } } //修改完成后记录 temp.objName = desingerObj.name; temp.bundleEventTriggerDesigners = bundleEventTriggers[i].GetJsonInfo(); //修改后保存 AssetDatabase.SaveAssets(); AssetDatabase.Refresh(); allTriggerToDesingerConfig.allJson.Add(temp); } }