응애맘마조
230517 강의 본문
xml에 대해서 강의를 했었습니다. xml은 마크업 언어이며 이 파일 형식으로 전에 만들었던 형식의 태양계나 걷는 모션 등 이 파일로 저장하고 불러오기를 했습니다. HTML과 얼핏 비슷해 보일 수 있으며 열고 닫기의 형식이 존재하기 때문에 최상위의 루트 노드 안에 필요한 파일 형식과 값을 저장하고 닫는 언어를 작성해야 합니다.
Xml::XMLDocument* doc = new Xml::XMLDocument();
Xml::XMLElement* ob = doc->NewElement("Root");
doc->LinkEndChild(ob);
ob->SetAttribute("name", "Sun");
{
Xml::XMLElement* Transform = doc->NewElement("Transform");
Xml::XMLElement* Pos = doc->NewElement("Position");
Xml::XMLElement* Scale = doc->NewElement("Scale");
Xml::XMLElement* Rot = doc->NewElement("Rotation");
ob->LinkEndChild(Transform);
Transform->LinkEndChild(Pos);
Transform->LinkEndChild(Scale);
Transform->LinkEndChild(Rot);
Pos->SetAttribute("X", 1.0f);
Pos->SetAttribute("Y", 10.0f);
Pos->SetAttribute("Z", 0.0f);
}
xml을 저장할 때 사용합니다. 예시로 저장할 때 사용했으며 SetAttribute는 key와 value값을 대입하여 나타낼 수 있습니다.
{
Xml::XMLDocument* doc = new Xml::XMLDocument();
doc->LoadFile("../Contents/GameObject/XMLTest.xml");
Xml::XMLElement* ob;
Xml::XMLElement* trans;
Xml::XMLElement* Pos;
ob = doc->FirstChildElement();
trans = ob->FirstChildElement("Transform");
Pos = trans->FirstChildElement("Position");
cout << ob->Attribute("name") << endl;
cout << Pos->FloatAttribute("X") << endl;
cout << Pos->FloatAttribute("Y") << endl;
}
불러오기를 할 때는 저장하기의 역순으로 불러오면 됩니다.
//Sun.xml
<Root Name="Sun">
<Mesh File="1.Sphere.mesh"/>
<Shader File="1.Cube.hlsl"/>
<Transform>
<Position X="0" Y="0" Z="0"/>
<Scale X="1" Y="1" Z="1"/>
<Rotation X="-0.41887903" Y="-0.33161256" Z="1.2740904"/>
</Transform>
<Children Size="2"/>
<Child0 Name="EarthBone">
<Mesh File="1.Point.mesh"/>
<Shader File="1.Cube.hlsl"/>
<Transform>
<Position X="3.3499999" Y="-0.2" Z="-0.85000002"/>
<Scale X="0.5" Y="0.5" Z="0.5"/>
<Rotation X="-5" Y="276.43201" Z="0"/>
</Transform>
<Children Size="1"/>
<Child0 Name="Earth">
<Mesh File="1.Sphere.mesh"/>
<Shader File="1.Cube.hlsl"/>
<Transform>
<Position X="8.3999996" Y="1.15" Z="-1.3"/>
<Scale X="1" Y="1" Z="1"/>
<Rotation X="-1.1" Y="-309.23199" Z="-0.89999998"/>
</Transform>
<Children Size="1"/>
<Child0 Name="Moon">
<Mesh File="1.Sphere.mesh"/>
<Shader File="1.Cube.hlsl"/>
<Transform>
<Position X="2.55" Y="0" Z="0"/>
<Scale X="0.5" Y="0.5" Z="0.5"/>
<Rotation X="0" Y="0" Z="0"/>
</Transform>
<Children Size="0"/>
</Child0>
</Child0>
</Child0>
<Child1 Name="MarsBone">
<Mesh File="1.Point.mesh"/>
<Shader File="1.Cube.hlsl"/>
<Transform>
<Position X="0" Y="0" Z="0"/>
<Scale X="0.5" Y="0.5" Z="0.5"/>
<Rotation X="0" Y="0" Z="0"/>
</Transform>
<Children Size="1"/>
<Child0 Name="Mars">
<Mesh File="1.Sphere.mesh"/>
<Shader File="1.Cube.hlsl"/>
<Transform>
<Position X="12" Y="0" Z="0"/>
<Scale X="1" Y="1" Z="1"/>
<Rotation X="0" Y="0" Z="0"/>
</Transform>
<Children Size="0"/>
</Child0>
</Child1>
</Root>
태양계의 xml 코드입니다.
읽어주셔서 감사합니다.