private static GameObject LoadRecursionOnce(GameObject parentGo, BinaryNode domNode) { GameObject gameObject = null; string nodeAttr = GameSerializer.GetNodeAttr(domNode, "ON"); if (parentGo != null) { for (int i = 0; i < parentGo.transform.childCount; i++) { if (parentGo.transform.GetChild(i).name.Equals(nodeAttr)) { gameObject = parentGo.transform.GetChild(i).gameObject; break; } } } if (gameObject == null) { string nodeAttr2 = GameSerializer.GetNodeAttr(domNode, "PFB"); if (nodeAttr2 != null && nodeAttr2.get_Length() != 0) { object resource = GameSerializer.GetResource(nodeAttr2, typeof(GameObject)); if (resource == null || !(resource is GameObject)) { Debug.LogError(nodeAttr2 + " 不存在或者类型错误,请重新导出该场景"); gameObject = new GameObject(); } else { GameObject gameObject2 = resource as GameObject; bool activeSelf = gameObject2.activeSelf; gameObject2.SetActive(false); gameObject = (GameObject)Object.Instantiate(gameObject2); gameObject2.SetActive(activeSelf); } } else { gameObject = new GameObject(); } } Vector3 localScale = gameObject.transform.localScale; gameObject.name = GameSerializer.GetNodeAttr(domNode, "ON"); if (parentGo != null) { gameObject.transform.parent = parentGo.transform; } gameObject.transform.localScale = localScale; GameSerializer.DeserializeObject(domNode, gameObject); gameObject.SetActive(false); GameSerializer.InitComponets(domNode, gameObject); for (int j = 0; j < domNode.GetChildNum(); j++) { BinaryNode child = domNode.GetChild(j); if (child.GetName() == "CHD") { GameSerializer.LoadRecursionOnce(gameObject, child); } } return(gameObject); }