//加载指定资源XML结构 protected XmlStruct LoadResourceXMLByXmlStruct(XmlStruct xmlStruct, string structName) { xmlStruct = new XmlStruct(); XmlResourceStruct resourceStruct = GetResourceXMLStructFromMainXML(XMLStaticString._resourceFile, structName); xmlStruct.xmlName = resourceStruct.resName; xmlStruct.xmlPackageName = resourceStruct.resPackageName; xmlStruct.xmlPath = resourceStruct.resPath; xmlStruct.xmlVersion = resourceStruct.resVersion; if (string.IsNullOrEmpty(xmlStruct.xmlPath)) { return(xmlStruct); } XmlDocument xml = LoadXml(xmlStruct.xmlPackageName + "/" + xmlStruct.xmlPath); XmlNodeStruct nodeStruct = new XmlNodeStruct(); XmlNode resourceNode = xml.SelectSingleNode(XMLStaticString._resources); nodeStruct.xmlNodeName = XMLStaticString._resourceFile; //加载XML的节点 nodeStruct.xmlNode = resourceNode.SelectSingleNode(nodeStruct.xmlNodeName); //加载"ResourceFile"节点下的所有资源 nodeStruct = LoadResourcesByXMLNode(nodeStruct); xmlStruct.xmlNodeStruct = nodeStruct; return(xmlStruct); }
//从主XML中获取资源XML的结构 protected XmlResourceStruct GetResourceXMLStructFromMainXML(string nodeName, string structName) { XmlResourceStruct resourceStruct = new XmlResourceStruct(); XmlNodeStruct nodeStruct = new XmlNodeStruct(); if (m_mainXMLNodeStructList != null) { for (int i = 0; i < m_mainXMLNodeStructList.Count; i++) { if (nodeName.Equals(m_mainXMLNodeStructList[i].xmlNodeName)) { nodeStruct = m_mainXMLNodeStructList[i]; break; } } if (nodeStruct.xmlResourceStructArray != null) { for (int i = 0; i < nodeStruct.xmlResourceStructArray.Length; i++) { if (structName.Equals(nodeStruct.xmlResourceStructArray[i].resName)) { resourceStruct = nodeStruct.xmlResourceStructArray[i]; return(resourceStruct); } } } } return(resourceStruct); }
/// <summary> /// 获取克隆材质 /// </summary> /// <param name="resName">资源名称</param> /// <returns>克隆材质球</returns> public Material GetCopyMaterialResourceByName(string resName) { XmlResourceStruct resStruct = GetNodeStructByXMLStruct(m_materialXML, "ResourceFile", resName); if (resStruct.resPath == null) { Debug.LogError("材质资源::" + resName + "获取失败"); return(null); } Material material = new Material((Material)Resources.Load(resStruct.resPath)); return(material); }
/// <summary> /// 获取Json文本 Resources本地读取 /// </summary> /// <param name="jsonName">json文件名</param> /// <returns></returns> public TextAsset GetJsonTextByName(string jsonName) { XmlResourceStruct resStruct = GetNodeStructByXMLStruct(m_jsonXML, "ResourceFile", jsonName); if (resStruct.resPath == null) { Debug.LogError("Json资源::" + jsonName + "获取失败"); return(null); } TextAsset myJson = (TextAsset)Resources.Load(resStruct.resPath); return(myJson); }
/// <summary> /// 获取动画 /// </summary> /// <param name="resName">资源名称</param> /// <returns>动画控制器</returns> public RuntimeAnimatorController GetAnimatorResourceByName(string resName) { XmlResourceStruct resStruct = GetNodeStructByXMLStruct(m_animatorXML, "ResourceFile", resName); if (resStruct.resPath == null) { Debug.LogError("动画资源::" + resName + "获取失败"); return(null); } RuntimeAnimatorController obj = Resources.Load <RuntimeAnimatorController>("New Animator Controller"); return(obj); }
/// <summary> /// 获取预制 /// </summary> /// <param name="resName">资源名称</param> /// <returns>GameObject预制 未实例化</returns> public GameObject GetPrefabResourceByName(string resName) { XmlResourceStruct resStruct = GetNodeStructByXMLStruct(m_prefabXML, "ResourceFile", resName); if (resStruct.resPath == null) { Debug.LogError("预制资源::" + resName + "获取失败"); return(null); } //Debug.Log(resStruct.resPath); GameObject obj = (GameObject)Resources.Load(resStruct.resPath); return(obj); }
/// <summary> /// 获取精灵贴图数组 /// </summary> /// <param name="resName">资源名称</param> /// <returns>Sprite贴图数组</returns> public Sprite[] GetSpriteArrayResourceByName(string resName) { XmlResourceStruct resStruct = GetNodeStructByXMLStruct(m_textureXML, "ResourceFile", resName); if (resStruct.resPath == null) { Debug.LogError("Sprite贴图数组资源::" + resName + "获取失败"); return(null); } Sprite[] spriteArray = Resources.LoadAll <Sprite>(resStruct.resPath); return(spriteArray); }
/// <summary> /// 获取贴图 /// </summary> /// <param name="resName">资源名称</param> /// <returns>Texture贴图</returns> public Texture GetTextureResourceByName(string resName) { XmlResourceStruct resStruct = GetNodeStructByXMLStruct(m_textureXML, "ResourceFile", resName); if (resStruct.resPath == null) { Debug.LogError("Texture贴图资源::" + resName + "获取失败"); return(null); } Texture texture = (Texture)Resources.Load(resStruct.resPath); return(texture); }
/// <summary> /// 获取音频 /// </summary> /// <param name="resName">资源名称</param> /// <returns>AudioClip音频</returns> public AudioClip GetAudioClipResourceByName(string resName) { XmlResourceStruct resStruct = GetNodeStructByXMLStruct(m_audioXML, "ResourceFile", resName); if (resStruct.resPath == null) { Debug.LogError("音频资源::" + resName + "获取失败"); return(null); } AudioClip audio = (AudioClip)Resources.Load(resStruct.resPath); return(audio); }
/// <summary> /// 获取指定名称的XML -- 配置在表中的Xml /// </summary> /// <param name="xmlName">XML文档名称</param> /// <returns>XmlDocument</returns> public XmlDocument GetXMLDocumentByName(string xmlName) { XmlResourceStruct resStruct = GetNodeStructByXMLStruct(m_xmlXML, "ResourceFile", xmlName); if (resStruct.resPath == null) { Debug.LogError("Xml资源::" + xmlName + "获取失败"); return(null); } XmlDocument xml = LoadXml(resStruct.resPath); return(xml); }
//从指定XML中获取指定的XML节点 protected XmlResourceStruct GetNodeStructByXMLStruct(XmlStruct xml, string resParentNodeName, string resName) { XmlNodeStruct parentNode = new XmlNodeStruct(); XmlResourceStruct resStruct = new XmlResourceStruct(); parentNode = xml.xmlNodeStruct; for (int i = 0; i < parentNode.xmlResourceStructArray.Length; i++) { if (resName.Equals(parentNode.xmlResourceStructArray[i].resName)) { resStruct = parentNode.xmlResourceStructArray[i]; break; } } return(resStruct); }