项目记录04--客户端unity,服务端erlang--打包数据csv
2015-11-23 14:34
405 查看
开始前必须做好准备,就是决定数据究竟用什么类型好。xml,json,csv,tex.....最终决定使用csv,阅读性肯定没有其它好,好处就是比较小,打出包比较小。
先写个打包工具:
核心代码:
[MenuItem("GameTool/BuildAssets/Build_CSV")]
public static void BuildCSV()
{
//Path 先读取-->序列号ScriptableObject 将些不能打包的比如string等转化 -->生成asset AssetDataBase -->打包AssetBundle
string csvReadPath = applicationPath + "/DataTable/CSV/"; //读取的CSV目录
string assetPathTemp = "Assets/Local/temp/"; //临时生成的createAsset二进制文件目录
string saveAssetBundleName = "csv.assetbundle"; //生成AssetBundle名称
string savePath = saveDir + saveAssetBundleName; //生成保存的目录
#region 固定目录打包
//拿到文件
List<Object> outs = new List<Object>();
string[] allFilesPath = Directory.GetFiles(csvReadPath);
for (int i = 0, max = allFilesPath.Length; i < max; i++ )
{
string filesPath = allFilesPath[i];
//过滤文件.csv
if (filesPath.Substring(filesPath.LastIndexOf(".") + 1) != "csv")
continue;
string fileName = filesPath.Substring(filesPath.LastIndexOf("/") + 1).Split('.')[0];
//序列化
soCSV csv = ScriptableObject.CreateInstance<soCSV>();
csv.fileName = fileName;
csv.content = File.ReadAllBytes(filesPath);
//生成AssetDatabase临时中间文件二进制
string TempPath = assetPathTemp + fileName + ".asset";
AssetDatabase.CreateAsset(csv, TempPath);
//取出来丢进outs里面等待打包
Object outTemp = AssetDatabase.LoadAssetAtPath(TempPath,typeof(soCSV));
outs.Add(outTemp);
}
#endregion
if (BuildPipeline.BuildAssetBundle(null, outs.ToArray(), savePath, BuildAssetBundleOptions.IgnoreTypeTreeChanges, PlatformUtil.Build_Target))
EditorUtility.DisplayDialog("ok", "build " + savePath + " success,length = " + outs.ToString().Length, " ok");
else
Debug.LogWarning("build" + savePath + " failed");
AssetDatabase.Refresh ();
}
先写个打包工具:
核心代码:
[MenuItem("GameTool/BuildAssets/Build_CSV")]
public static void BuildCSV()
{
//Path 先读取-->序列号ScriptableObject 将些不能打包的比如string等转化 -->生成asset AssetDataBase -->打包AssetBundle
string csvReadPath = applicationPath + "/DataTable/CSV/"; //读取的CSV目录
string assetPathTemp = "Assets/Local/temp/"; //临时生成的createAsset二进制文件目录
string saveAssetBundleName = "csv.assetbundle"; //生成AssetBundle名称
string savePath = saveDir + saveAssetBundleName; //生成保存的目录
#region 固定目录打包
//拿到文件
List<Object> outs = new List<Object>();
string[] allFilesPath = Directory.GetFiles(csvReadPath);
for (int i = 0, max = allFilesPath.Length; i < max; i++ )
{
string filesPath = allFilesPath[i];
//过滤文件.csv
if (filesPath.Substring(filesPath.LastIndexOf(".") + 1) != "csv")
continue;
string fileName = filesPath.Substring(filesPath.LastIndexOf("/") + 1).Split('.')[0];
//序列化
soCSV csv = ScriptableObject.CreateInstance<soCSV>();
csv.fileName = fileName;
csv.content = File.ReadAllBytes(filesPath);
//生成AssetDatabase临时中间文件二进制
string TempPath = assetPathTemp + fileName + ".asset";
AssetDatabase.CreateAsset(csv, TempPath);
//取出来丢进outs里面等待打包
Object outTemp = AssetDatabase.LoadAssetAtPath(TempPath,typeof(soCSV));
outs.Add(outTemp);
}
#endregion
if (BuildPipeline.BuildAssetBundle(null, outs.ToArray(), savePath, BuildAssetBundleOptions.IgnoreTypeTreeChanges, PlatformUtil.Build_Target))
EditorUtility.DisplayDialog("ok", "build " + savePath + " success,length = " + outs.ToString().Length, " ok");
else
Debug.LogWarning("build" + savePath + " failed");
AssetDatabase.Refresh ();
}
相关文章推荐
- Unity PC端发布失败解决办法
- unity 实时重复纹理
- Unity3D-FSM有限状态机的简单设计
- Unity3D摄像机高级控制
- Android版Unity游戏引擎的集成Admob管理库教程
- Unity3D游戏开发之C++插件接入
- 解析OBJ模型并将其加载到Unity3D场景中
- Unity3D 自定义 Editor 扩展
- 深入浅出聊Unity3D项目优化:从Draw Calls到GC
- 【Unity常识】游戏对象及脚本的状态与Start等函数的调用关系
- Unity3D -- 质量设置(Quality Settings)
- Unity3D 处于Camera跟随游戏对象后面拍摄的方法
- Unity& leapmotion开发实录
- Unity给力插件之LittleLocalization
- 【转】【UNITY3D 游戏开发之六】UNITY 协程COROUTINE与INVOKE
- Unity触发器有时失效的原因
- unity让物体鼠标平滑移动物体
- Unity中使用SLua的一些注意事项
- Unity中的输入
- Unity3D关于刚体(RigidBody)与碰撞体(Collider)的探索(二)