public void RefreshData() { //刷新object var references = GameObjectUtilities.FindSceneAllGameObjects <ReferenceObject>(); GUIDdic.Clear(); AllDic.Clear(); References.Clear(); foreach (var refobj in references) { ReferenceObject conflitObj = null; if (GUIDdic.ContainsKey(refobj.Data.GUID)) { conflitObj = GUIDdic[refobj.Data.GUID]; } else { GUIDdic[refobj.Data.GUID] = refobj; } AllDic[refobj] = conflitObj; } Regex r = new Regex(@"GUID:\s*(\S*)\s*DyamicName:\s*(\S*)\s*Dynamic:\s*(\S*)\s*TypeName:", RegexOptions.IgnoreCase); //刷新引用 foreach (var asset in TestAssets) { if (asset) { var filepath = PathTools.Asset2File(AssetDatabase.GetAssetPath(asset)); string allFileContent = FileTools.ReadAllText(filepath); MatchCollection ms = r.Matches(allFileContent); for (int i = 0; i < ms.Count; i++) { Match m = ms[i]; String guid1 = m.Groups[1].ToString(); String dynaimcName = m.Groups[2].ToString(); String dynaimc = m.Groups[3].ToString(); if (guid1.IsNOTNullOrEmpty()) { bool dyn = dynaimc == "1"?true:false; References.Add(new SceneReference() { Identity = guid1, Dynamic = dyn, DyamicName = dynaimcName }); } } } } }
public void CollectRefrence() { Refrences = GameObjectUtilities.FindSceneAllGameObjects <ReferenceObject>(); dic.Clear(); foreach (var refobj in Refrences) { if (dic.ContainsKey(refobj.Data.GUID)) { LogConflict(dic[refobj.Data.GUID], refobj); } else { dic.Add(refobj.Data.GUID, refobj); } } DynamicReference dynamicRef = GetComponent <DynamicReference>(); if (dynamicRef) { dynamicRef.Sync2Root(); } }