在遊戲開發過程中,讀寫xml幾乎已經成為不可或缺的功能,但是由於有一點點的先入為主,當時直接選擇了使用c++常用的tinyxml,於是這裡就需要引用第三庫,其實ue4有乙個自帶的xmlparser,也可以輕鬆讀寫xml。下面我們就看看這兩種的方式的詳細操作。
一、準備工作:
1.用ue4建立乙個空模板的c++工程,命名為tinyxmlproject。 2.
二、xmlparser:
1.為build指令碼新增xmlparser的模組,用vs開啟當前的工程,找到並開啟source/tinyxmlproject/tinyxmlproject.build.cs指令碼,在publicdependencymodulenames中新增"xmlparser":
public tinyxmlproject(targetinfo target));
privatedependencymodulenames.addrange(new string );
// uncomment if you are using slate ui
// privatedependencymodulenames.addrange(new string );
// uncomment if you are using online features
// privatedependencymodulenames.add("onlinesubsystem");
// if ((target.platform == unrealtargetplatform.win32) || (target.platform == unrealtargetplatform.win64))
// // }
}
2.在tinyxmlprojectgamemode新增標頭檔案xmlparser.h就開始寫第乙個功能,建立並寫入xml檔案,因為之前的build.cs中新增了模組,我們可以直接在指令碼中新增標頭檔案
,這裡的xml內容注意符合xml的規則,如果不符合就無法寫入。
void atinyxmlprojectgamemode::createxmlparser()
3.然後在beginplay中呼叫createxmlparser(),並在ue4中編譯執行,就會在工程路徑下找到乙個test.xml檔案,開啟就會看見寫入了我們之前所輸入的內容。
4.讀取xml,具體注釋在指令碼中:
void atinyxmlprojectgamemode::readxmlparser(const fstring &_xmlpath)}}
5.繼續呼叫編譯並列印,在螢幕上就能看見我們所獲取的節點內容
三、tinyxml:
1.先給乙個第三方庫的官方wiki,詳細的步驟也可以參照這個來看:
3.生成tinyxml工程,並找到生成的tinyxml.lib檔案和tinystr.h、tinyxml.h兩個標頭檔案,分別複製到ue4工程目錄下的tinyxmlproject\thirdparty\libs和tinyxmlproject\thirdparty\includes,這裡的工程下的資料夾都是新建的。
4.在ue4中找到我們最開始更改的tinyxmlproject.build.cs腳步,我們又需要新增新的配置,這裡我就直接給出整個指令碼,這裡的功能就是替代普通c++工程引用靜態庫的配置,詳細看看都乙個意思,只是方式不同而已。
using system.io;
using unrealbuildtool;
public class tinyxmlproject : modulerules
}//第三方庫的路徑
private string thirdpartypath
}public tinyxmlproject(targetinfo target)
); privatedependencymodulenames.addrange(new string );
//頭檔案目錄
publicincludepaths.add(path.combine(thirdpartypath, "includes"));
//lib檔案
publicadditionallibraries.add(path.combine(thirdpartypath, "libs","tinyxml.lib"));
// uncomment if you are using slate ui
// privatedependencymodulenames.addrange(new string );
// uncomment if you are using online features
// privatedependencymodulenames.add("onlinesubsystem");
// if ((target.platform == unrealtargetplatform.win32) || (target.platform == unrealtargetplatform.win64))
// // }}}
5.靜態庫配置完成後,再指令碼中新增tinystr.h、tinyxml.h兩個標頭檔案,我們就
嘗試利用tinyxml的介面讀取本地xml
,這裡主要注意一些變數型別的轉換,ue4是自己的一套變數型別,並不適用tinyxml。
bool atinyxmlprojectgamemode::readxmlfile(const fstring &_xmlpath)
return false;
}
6.再次編譯除錯
void atinyxmlprojectgamemode::beginplay()
UE4鏈結第三方庫
首先寫乙個第三方庫 h cpp view plain copy pragma once ifndef mytest lib h define mytest lib h include include intaddd inta,intb endif cpp cpp view plain copy in...
UE4 除錯第三方庫相關問題
ue4可以整合第三方庫 包含自己編寫的庫 往往需要ue4和第三方庫一起除錯,因此需要使用第三方庫的除錯版本。以版本ue4.9.2來研究相關問題。多執行緒 mt 0 多執行緒除錯 mtd 1 多執行緒dll md 2 多執行緒除錯dll mdd 3if compileenvironment.confi...
UE4鏈結第三方庫(lib和dll)
摘要 寫這個文章主要是被ue官方的wiki和answerhub誤導了很久,這本來是乙個很常見和基本的問題,但是無論是官方的wiki或者是論壇上的提問都十分散亂並且充斥各種錯誤,因此記錄下這個在開發中時常遇到的問題。在開發中經常遇到的問題就是加入某第三方庫的支援,這樣的第三方庫往往屬於無原始碼,而且可...