// 유틸 : 테이블 데이터 생성 ( 번들정보와 리소스정보 준비시키기 ) static SHTableData CreateTableData(BuildTarget eTarget) { // 테이블 데이터 생성 SHTableData pTableData = new SHTableData(); pTableData.OnInitialize(); { // 클라이언트 정보 테이블 준비 var pClientInfo = GetClientConfigTable(pTableData); pClientInfo.LoadJsonToLocal(pClientInfo.m_strFileName); // 서버 정보 테이블 준비 var pServerInfo = GetServerConfigTable(pTableData); if (false == string.IsNullOrEmpty(pClientInfo.GetConfigurationCDN())) { pServerInfo.DownloadByCDNToSync(pClientInfo.GetConfigurationCDN()); } else { pServerInfo.LoadJsonToLocal(pServerInfo.m_strFileName); } // 번들정보 테이블 준비 var pBundleInfo = GetBundleTable(pTableData); pBundleInfo.SetData( pBundleInfo.UpdateAssetBundlesMakeInfoByStreamingPath( pServerInfo.GetBundleCDN(pClientInfo.GetServiceMode(), pClientInfo.GetVersion()), eTarget)); // 리소스 리스트 테이블 준비 var pResourceInfo = GetResourceTable(pTableData); pResourceInfo.LoadJsonToLocal(pResourceInfo.m_strFileName); } return(pTableData); }
// 인터페이스 : 에디터 클래스 전용 ( Resources폴더내에 컨버팅된 Byte파일을 쏟아 냄 ) public void RunEditorToConverter() { var pTableData = new SHTableData(); pTableData.OnInitialize(); ConverterTableToByte(pTableData, SHPath.GetResourceByteTable()); pTableData.OnFinalize(); }
// 인터페이스 : 에디터 클래스 전용 ( Resources폴더내에 컨버팅된 Byte파일을 쏟아 냄 ) public void RunEditorToConvert() { var pTableData = new SHTableData(); pTableData.OnInitialize(); ConvertByteFiles(pTableData, string.Format("{0}{1}", SHPath.GetPathToResources(), "/Table/Bytes")); pTableData.OnFinalize(); }
// 유틸 : 패킹할 번들 리스트 만들기 static Dictionary <string, AssetBundleInfo> GetPackingBundleList(SHTableData pTableData, eBundlePackType ePackingType) { var pBundleInfo = GetBundleTable(pTableData); switch (ePackingType) { case eBundlePackType.All: return(pBundleInfo.GetContainer()); case eBundlePackType.Update: return(pBundleInfo.GetBundleListToCompare(GetResourceTable(pTableData))); } return(new Dictionary <string, AssetBundleInfo>()); }
// 유틸 : 원본 리소스 모두 제거 static void DeleteOriginalResource(SHTableData pTableData) { var pBundleInfo = GetBundleTable(pTableData); SHUtils.ForToDic(pBundleInfo.GetContainer(), (pKey, pValue) => { SHUtils.ForToDic(pValue.m_dicResources, (pResKey, pResValue) => { SHUtils.DeleteFile(string.Format("{0}/{1}{2}", SHPath.GetPathToResources(), pResValue.m_strPath, pResValue.m_strExtension)); SHUtils.DeleteFile(string.Format("{0}/{1}{2}", SHPath.GetPathToResources(), pResValue.m_strPath, ".meta")); }); }); }
// 인터페이스 : 바이트파일 컨버터 ( 전달된 TableData를 참조해서 전달된 저장경로에 쏟아 냄 ) public void ConvertByteFiles(SHTableData pTableData, string strSavePath) { if (null == pTableData) { return; } SHUtils.ForToDic(pTableData.Tables, (pKey, pValue) => { ConvertByteFile(pValue, strSavePath); }); Debug.Log("<color=yellow>ConvertByteFiles Finish!!!</color>"); }
// 인터페이스 : 바이트파일 컨버터 ( 전달된 TableData를 참조해서 전달된 저장경로에 쏟아 냄 ) public void ConverterTableToByte(SHTableData pTableData, string strSavePath) { if (null == pTableData) { return; } int iSucceedCnt = 0; foreach (var kvp in pTableData.Tables) { if (ConverterByteFile(kvp.Value, strSavePath)) { ++iSucceedCnt; } } Debug.LogFormat("<color=yellow>[LSH] Converter Table To Byte Finish!!!(SucceedCnt : {0})</color>", iSucceedCnt); }
// 유틸 : 번들정보 스크립트 아웃풋 static void UpdateBundleInfoTable(BuildTarget eTarget, SHTableData pTableData, Dictionary <string, AssetBundleInfo> dicMakeBundles, string strOutputPath) { var pBundleTable = GetBundleTable(pTableData); var pResourceTable = GetResourceTable(pTableData); SHUtils.ForToDic(dicMakeBundles, (pKey, pValue) => { AssetBundleInfo pData = pBundleTable.GetBundleInfo(pValue.m_strBundleName); pData.m_lBundleSize = pValue.m_lBundleSize; pData.m_pHash128 = pValue.m_pHash128; pData.CopyResourceInfo(pValue.m_dicResources); SHUtils.ForToDic(pData.m_dicResources, (pResKey, pResValue) => { pResValue.CopyTo(pResourceTable.GetResouceInfo(pResKey)); }); }); pBundleTable.SaveJsonFileByDic( string.Format("{0}/{1}.json", strOutputPath, pBundleTable.m_strFileName)); }
// 유틸 : 리소스 테이블 얻기 static JsonResourcesTable GetResourceTable(SHTableData pTableData) { return(pTableData.GetTable <JsonResourcesTable>()); }
// 유틸 : 번들 테이블 얻기 static JsonAssetBundleInfo GetBundleTable(SHTableData pTableData) { return(pTableData.GetTable <JsonAssetBundleInfo>()); }
// 유틸 : 서버 정보 테이블 얻기 static JsonServerConfiguration GetServerConfigTable(SHTableData pTableData) { return(pTableData.GetTable <JsonServerConfiguration>()); }
// 유틸 : 클라이언트 정보 테이블 얻기 static JsonClientConfiguration GetClientConfigTable(SHTableData pTableData) { return(pTableData.GetTable <JsonClientConfiguration>()); }