XML 파일을 사용하여 일부 데이터를 저장하므로 유니티에 resx 관련 문제가있어서 XML을 사용해야하기 때문에 다른 언어로보다 쉽게 현지화 할 수 있습니다.Unity3d가 빌드 후 프로젝트 폴더에있는 XML 파일을 보지 못합니다.
UnityEditor에서는 모든 것이 훌륭하게 작동하지만, 빌드 할 때 XML의 첫 번째 사용에서는 작동하지 않습니다.
Unity가 XML 파일을 내 문서 폴더에 수동으로 넣고 참조를 사용하려고 할 때 어떤 이유로 XML 파일에 연결할 수없는 것 같습니다.
이 XML 파일에 현재 경로 :
Assets/Scripts/Core/Localization/lang.eng.xml
이 UnityEditor에서 훌륭한 작품이 때 빌드를 작동하지 않았다.
이 또 다른 (그러나 여기에 직접 넣어해야) :
Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) +
"\\testFolder\\lang.eng.xml"
하지만 난 그렇게 좋아하지 않아, 어쩌면 그것이 작동되도록하는 방법은 어떤 종류가?
나는 이것을 자동화 할 수 있지만 나는 여전히 이것을 좋아하지 않는다는 것을 안다. 나는 기본적으로 게임 폴더에 resx (.resources)와 같은 이진 파일이 될 것이라고 생각했다.
그 상황에서 가장 좋은 해결책은 무엇입니까? 선택의 여지가 없다면 "내 문서"폴더를 사용해야합니까?
미리 감사드립니다.
--------------------- 필요한 경우 여기에 몇 가지 코드가 있습니다.
using System;
using System.ComponentModel;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Xml.Linq;
private static readonly XDocument Document = new XDocument;
private static void OpenDocument() {
try {
string filename = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) +
"\\testFolder\\lang.eng.xml";
Document = XDocument.Load(filename);
}
catch (FileNotFoundException exception) {
UnityEngine.Debug.Log(exception);
}
}
이 작업을하려면 : -----
는 XML 파일을 열려면 내가 이것을 사용
public static string GetEnumStringQ(Enum e, KindOfItemData kindOf) {
string key = @"name=""" + e + @"""";
string enumType = e.GetType().ToString();
string kindOfValue = kindOf.ToString();
if (Document == null) {
OpenDocument();
}
if (Document.Root == null) return e.ToString();
foreach (XElement el in Document.Root.Elements().Where(el => el.Name == enumType)) {
foreach (XAttribute attr in el.Attributes().Where(attr => attr.ToString() == key)) {
foreach (XElement element in el.Elements().Where(element => element.Name == kindOfValue)) {
return element.Value;
}
}
}
return e.ToString();
}
그리고 이것은 XML 파일의 조각 :
<PassiveArmorSpecial name="StaminaRegenerationLow"> <value>Stamina Regeneration (low)</value></PassiveArmorSpecial>
<PassiveArmorSpecial name="StaminaRegenerationMed"> <value>Stamina Regeneration (med)</value></PassiveArmorSpecial>
<PassiveArmorSpecial name="StaminaRegenerationHigh"> <value>Stamina Regeneration (high)</value></PassiveArmorSpecial>
<PassiveArmorSpecial name="VampirismLow"> <value>Vampirism (low)</value></PassiveArmorSpecial>
<PassiveArmorSpecial name="VampirismMed"> <value>Vampirism (med)</value></PassiveArmorSpecial>
<PassiveArmorSpecial name="VampirismHigh"> <value>Vampirism (high)</value></PassiveArmorSpecial>
<TypeOfDefence name="Flesh"> <value>Flesh</value></TypeOfDefence>
<TypeOfDefence name="Bone"> <value>Bone</value></TypeOfDefence>
<TypeOfDefence name="Metal"> <value>Metal</value></TypeOfDefence>
<TypeOfDefence name="Rock"> <value>Rock</value></TypeOfDefence>
배포 할 파일을 Visual Studio에 표시 했습니까? 파일을 선택하고 속성 창에서 연결된 배포 작업을 확인하십시오. – Gonzix
예, 표시되었지만 아무런 변화가 없습니다. 어쨌든 고마워요 –