提交 d5a84326 编写于 作者: 威武堂堂's avatar 威武堂堂

打包工具基础版,完成度80%

上级 7108e10b
......@@ -2,5 +2,5 @@ Library
Logs
Temp
Bin
Assets/StreamingAssets/res
Assets/AB
gamelog
\ No newline at end of file
......@@ -59,6 +59,7 @@
<Compile Include="Assets\LuaFramework\ToLua\Editor\Extend\ToLua_System_Type.cs" />
<Compile Include="Assets\LuaFramework\ToLua\Editor\Extend\ToLua_LuaInterface_EventObject.cs" />
<Compile Include="Assets\LuaFramework\ToLua\Editor\Extend\ToLua_UnityEngine_Input.cs" />
<Compile Include="Assets\Editor\Build\AlterAssetBundle.cs" />
<Compile Include="Assets\LuaFramework\ToLua\Editor\Extend\ToLua_System_String.cs" />
<Compile Include="Assets\LuaFramework\ToLua\Editor\Extend\ToLua_System_Enum.cs" />
<Compile Include="Assets\LuaFramework\Editor\Packager.cs" />
......@@ -83,7 +84,6 @@
<Compile Include="Assets\LuaFramework\ToLua\Editor\ToLuaExport.cs" />
<Compile Include="Assets\LuaFramework\ToLua\Editor\Extend\ToLua_System_Delegate.cs" />
<Compile Include="Assets\Editor\ResConfig\ResConfigEditor.cs" />
<Compile Include="Assets\Editor\Build\AlterAssetBundle.cs" />
</ItemGroup>
<ItemGroup>
<Reference Include="UnityEngine">
......
......@@ -85,14 +85,13 @@
<Compile Include="Assets\LuaFramework\ToLua\Source\Generate\UnityEngine_UI_GraphicWrap.cs" />
<Compile Include="Assets\Scripts\XFramework\Audio\AudioCfg.cs" />
<Compile Include="Assets\LuaFramework\ToLua\BaseType\System_TypeWrap.cs" />
<Compile Include="Assets\Scripts\ConstDefine\ManagerName.cs" />
<Compile Include="Assets\Scripts\HotUpdate\ManagerName.cs" />
<Compile Include="Assets\LuaFramework\ToLua\Source\Generate\UnityEngine_SleepTimeoutWrap.cs" />
<Compile Include="Assets\Scripts\XFramework\Common\Misc\PrefabBinder.cs" />
<Compile Include="Assets\LuaFramework\Scripts\Network\Protocal.cs" />
<Compile Include="Assets\LuaFramework\ToLua\Source\Generate\UnityEngine_Events_UnityEventBaseWrap.cs" />
<Compile Include="Assets\LuaFramework\Scripts\Framework\AppFacade.cs" />
<Compile Include="Assets\LuaFramework\ToLua\Source\Generate\UnityEngine_UI_SliderWrap.cs" />
<Compile Include="Assets\LuaFramework\ToLua\Source\Generate\UnityEngine_AudioSourceWrap.cs" />
<Compile Include="Assets\LuaFramework\Scripts\Framework\AppFacade.cs" />
<Compile Include="Assets\LuaFramework\ToLua\Source\Generate\UnityEngine_UI_SelectableWrap.cs" />
<Compile Include="Assets\Scripts\XFramework\Common\Misc\ScreenCapture.cs" />
<Compile Include="Assets\LuaFramework\ToLua\Reflection\LuaProperty.cs" />
......@@ -197,6 +196,7 @@
<Compile Include="Assets\LuaFramework\Scripts\ObjectPool\ObjectPool.cs" />
<Compile Include="Assets\LuaFramework\ToLua\Core\LuaMisc.cs" />
<Compile Include="Assets\LuaFramework\Scripts\ObjectPool\TestObjectClass.cs" />
<Compile Include="Assets\LuaFramework\ToLua\Source\Generate\AppConstWrap.cs" />
<Compile Include="Assets\LuaFramework\ToLua\Source\Generate\UnityEngine_UI_ToggleWrap.cs" />
<Compile Include="Assets\LuaFramework\ToLua\BaseType\System_Collections_Generic_ListWrap.cs" />
<Compile Include="Assets\Scripts\XFramework\Sprite\SpriteCfgItem.cs" />
......@@ -300,7 +300,7 @@
<Compile Include="Assets\Scripts\XFramework\Version\VersionMgr.cs" />
<Compile Include="Assets\LuaFramework\Scripts\Network\Heartbeat.cs" />
<Compile Include="Assets\LuaFramework\ToLua\Source\Generate\UnityEngine_TrackedReferenceWrap.cs" />
<Compile Include="Assets\Scripts\ConstDefine\NotiConst.cs" />
<Compile Include="Assets\Scripts\HotUpdate\NotiConst.cs" />
<Compile Include="Assets\LuaFramework\Scripts\Framework\Core\Facade.cs" />
<Compile Include="Assets\Scripts\XFramework\sproto\src\SpObject.cs" />
<Compile Include="Assets\LuaFramework\ToLua\Core\LuaBaseRef.cs" />
......@@ -310,7 +310,6 @@
<Compile Include="Assets\Scripts\HotUpdate\HotUpdater.cs" />
<Compile Include="Assets\LuaFramework\ToLua\BaseType\UnityEngine_LightWrap.cs" />
<Compile Include="Assets\LuaFramework\ToLua\Reflection\LuaField.cs" />
<Compile Include="Assets\LuaFramework\ToLua\Source\Generate\AppConstWrap.cs" />
</ItemGroup>
<ItemGroup>
<None Include="Assets\RawAssets\Shader\OutlineEx.shader" />
......
StreamingAssets
UpdateZip
\ No newline at end of file
fileFormatVersion: 2
guid: 7db432f6c6d6f2644959cdfafe66b335
guid: 09bbc68af9310a047bcebb35aba885c0
folderAsset: yes
DefaultImporter:
externalObjects: {}
......
fileFormatVersion: 2
guid: f71838b58e9310543af2de351314375a
guid: 7d2b1d91772bdf445937280ad5b94a5b
folderAsset: yes
DefaultImporter:
externalObjects: {}
......
......@@ -4,142 +4,198 @@ using UnityEngine;
using UnityEditor;
using System.IO;
using LitJson;
using Ionic.Zip;
using System.Security.Cryptography;
using System.Text;
public class BuildUtils
{
/// <summary>
/// 递归遍历获取目标目录中的所有文件
/// 修改targetPath下资源的AssetBundleName与Variant
/// </summary>
/// <param name="sourceDir">目标目录</param>
/// <param name="splitAssetPath">是否要切割目录,以Assets目录为根</param>
public static List<string> GetFiles(string sourceDir, bool splitAssetPath)
public static void SetAssetBundleName(string targetPath, string AssetBundleName, string Variant)
{
List<string> fileList = new List<string>();
string[] fs = Directory.GetFiles(sourceDir);
string[] ds = Directory.GetDirectories(sourceDir);
for (int i = 0, len = fs.Length; i < len; ++i)
if (Directory.Exists(targetPath))
{
var index = splitAssetPath ? fs[i].IndexOf("Assets") : 0;
fileList.Add(fs[i].Substring(index));
}
for (int i = 0, len = ds.Length; i < len; ++i)
{
fileList.AddRange(GetFiles(ds[i], splitAssetPath));
}
return fileList;
}
DirectoryInfo direction = new DirectoryInfo(targetPath);
FileInfo[] files = direction.GetFiles("*", SearchOption.AllDirectories);
public static List<string> GetFiles(string[] sourceDirs, bool splitAssetPath)
{
List<string> fileList = new List<string>();
foreach (var sourceDir in sourceDirs)
{
fileList.AddRange(GetFiles(sourceDir, splitAssetPath));
for (int i = 0; i < files.Length; i++)
{
string fname = files[i].FullName;
if (fname.EndsWith(".meta"))
{
continue;
}
string relative = fname.Substring(fname.IndexOf("Assets"));
AssetImporter ai = AssetImporter.GetAtPath(relative);
if(AssetBundleName == "")
{
string[] strings = fname.Split("\\");
string name = strings.Length > 2 ? strings[strings.Length - 2] : strings[0];
ai.SetAssetBundleNameAndVariant(name, Variant);
}
else
{
ai.SetAssetBundleNameAndVariant(AssetBundleName, Variant);
}
}
AssetDatabase.Refresh();
}
return fileList;
}
/// <summary>
/// 根据哈希表构建AssetBundleBuild列表
/// 根据后缀定义BuildBundles处理方法 未具体实现
/// </summary>
/// <param name="tb">哈希表,key为assetBundleName,value为目录</param>
/// <returns></returns>
public static AssetBundleBuild[] MakeAssetBundleBuildArray(Hashtable tb)
public static void BuildBundlesBySuffix()
{
AssetBundleBuild[] buildArray = new AssetBundleBuild[tb.Count];
int index = 0;
foreach (string key in tb.Keys)
//获取ad全部资源路径
string[] adname = AssetDatabase.GetAllAssetBundleNames();
List<string> paths_lua = new List<string>();
foreach (var item in adname)
{
buildArray[index].assetBundleName = key;
List<string> fileList = new List<string>();
fileList = GetFiles(Application.dataPath + "/" + tb[key], true);
buildArray[index].assetNames = fileList.ToArray();
++index;
string[] path = AssetDatabase.GetAssetPathsFromAssetBundle(item);
foreach (var p_lua in path)
{
//根据后缀决定处理方式
string suffix = p_lua.Substring(p_lua.IndexOf(".") + 1);
if (suffix == "lua")
{
paths_lua.Add(p_lua);
}
}
}
return buildArray;
}
/// <summary>
/// 打包常规配置表AssetBundle
/// 生成文件的md5码的16进制
/// </summary>
public static void BuildNormalCfgBundle(string targetPath)
public static string CreatMD5str(string Path)
{
Hashtable tb = new Hashtable();
tb["normal_cfg.bundle"] = "GameRes/Config";
AssetBundleBuild[] buildArray = BuildUtils.MakeAssetBundleBuildArray(tb);
BuildUtils.BuildBundles(buildArray, targetPath);
FileStream file = new FileStream(Path, FileMode.Open);
MD5 md5 = new MD5CryptoServiceProvider();
byte[] md5s = md5.ComputeHash(file);
file.Close();
StringBuilder sb = new StringBuilder();
foreach (var item in md5s)
sb.Append(item.ToString("x2"));
return sb.ToString();
}
/// <summary>
/// 打包Lua的AssetBundle
/// 写入对比文件
/// </summary>
public static void BuildLuaBundle(string targetPath, List<string> luaFiles)
public static void WriteMD5File(string Path, string Version)
{
// 创建Lua的Bundle临时目录
var luabundleDir = BuildUtils.CreateTmpDir("luabundle");
// 将Lua代码拷贝到Bundle临时目录(做加密处理)
BuildUtils.CopyLuaToBundleDir(luaFiles, luabundleDir);
// 构建AssetBundleBuild列表
Hashtable tb = new Hashtable();
tb["lua.bundle"] = "luabundle";
AssetBundleBuild[] buildArray = MakeAssetBundleBuildArray(tb);
// 打包AssetBundle
BuildBundles(buildArray, targetPath);
DirectoryInfo direction = new DirectoryInfo(Path);
FileInfo[] fileInfos = direction.GetFiles();
// 删除Lua的Bundle临时目录
DeleteDir(luabundleDir);
AssetDatabase.Refresh();
JsonData compare = new JsonData();
foreach (var info in fileInfos)
{
if (info.Name.EndsWith("meta") || info.Name.EndsWith(".manifest"))
continue;
JsonData jsonItem = new JsonData();
jsonItem["Name"] = info.Name;
jsonItem["Length"] = info.Length;
jsonItem["MD5"] = CreatMD5str(info.FullName);
compare.Add(jsonItem);
}
StreamWriter sw = new StreamWriter(Path +"/Compare_" + Version + ".json");
sw.Write(JsonMapper.ToJson(compare));
StreamWriter sw1 = new StreamWriter(Application.dataPath + "/Resources/Compare_" + Version + ".json");
sw1.Write(JsonMapper.ToJson(compare));
sw.Close();
sw1.Close();
}
/// <summary>
/// 打包游戏资源AssetBundle
/// </summary>
public static void BuildGameResBundle(string targetPath)
public void BuildLuaUpdateBundle(List<string> luaFileList)
{
Hashtable tb = new Hashtable();
tb["baseres.bundle"] = "GameRes/BaseRes";
tb["uiprefabs.bundle"] = "GameRes/UIPrefabs";
tb["atlas.bundle"] = "GameRes/Atlas";
tb["effects.bundle"] = "GameRes/Effects";
tb["3d.bundle"] = "GameRes/3D";
AssetBundleBuild[] buildArray = MakeAssetBundleBuildArray(tb);
BuildBundles(buildArray, targetPath);
//var needUpdateLuaFiles = GetNeedUpdateLuaList();
//GameLogger.Log("needUpdateLuaFiles.Count:" + needUpdateLuaFiles.Count);
//var luaBundleDir = BuildUtils.CreateTmpDir("luabundle");
//BuildUtils.CopyLuaToBundleDir(needUpdateLuaFiles, luaBundleDir);
//// 打包AssetBundle
//Hashtable tb = new Hashtable();
//tb["lua_update.bundle"] = "luabundle";
//AssetBundleBuild[] buildArray = BuildUtils.MakeAssetBundleBuildArray(tb);
//BuildUtils.BuildBundles(buildArray, zipDir);
//BuildUtils.DeleteDir(luaBundleDir);
//AssetDatabase.Refresh();
}
//private List<string> GetNeedUpdateLuaList()
//{
//var localLuaMD5 = BuildUtils.GetOriginalLuaframeworkMD5Json();
//var originalLuaMD5FilePath = BuildUtils.BIN_PATH + "/LuaFrameworkFiles_" + Version + ".json";
//var originalLuaMD5File = File.OpenRead(originalLuaMD5FilePath);
//StreamReader sr = new StreamReader(originalLuaMD5File);
//var jsonStr = sr.ReadToEnd();
//sr.Close();
//var originalLuaMD5 = JsonMapper.ToObject(jsonStr);
//List<string> needUpdateLuaFiles = new List<string>();
//foreach (var key in localLuaMD5.Keys)
//{
// if (!originalLuaMD5.ContainsKey(key) || originalLuaMD5[key].ToString() != localLuaMD5[key].ToString())
// {
// needUpdateLuaFiles.Add(key);
// }
//}
//return needUpdateLuaFiles;
//}
/// <summary>
/// 打AssetBundle
/// 拷贝Lua到目标目录,并做加密处理
/// </summary>
/// <param name="buildArray">AssetBundleBuild列表</param>
public static void BuildBundles(AssetBundleBuild[] buildArray, string targetPath)
/// <param name="sourceDirs">源目录列表</param>
/// <param name="targetPath">目标目录</param>
public static void CopyLuaToBundleDir(FileInfo[] luaFiles, string targetPath)
{
if (!Directory.Exists(targetPath))
foreach (var luaFile in luaFiles)
{
Directory.CreateDirectory(targetPath);
if (luaFile.FullName.EndsWith(".lua"))
{
var targetFile = targetPath + "/" + luaFile.Name + ".bytes";
if (!Directory.Exists(targetPath))
Directory.CreateDirectory(targetPath);
// 做下加密
byte[] bytes = File.ReadAllBytes(luaFile.FullName);
byte[] encryptBytes = AESEncrypt.Encrypt(bytes);
File.WriteAllBytes(targetFile, encryptBytes);
}
}
BuildPipeline.BuildAssetBundles(targetPath, buildArray, BuildAssetBundleOptions.ChunkBasedCompression, GetBuildTarget());
AssetDatabase.Refresh();
}
///-----------PlayerSettings相关设置----------------
/// <summary>
/// 打包APP
/// </summary>
public static void BuildApp()
public static void BuildApp(BuildTarget target)
{
// 根据你的需求设置各种版本号
SetAppVersion();
// 设置APP名称
SetAppName("通用游戏框架");
// 设置IL2CPP还是Mono
SetScriptingBackend(false);
SetScriptingBackend(BuildTargetGroup.Android, false);
// PC平台的一些设置
SetStandalone();
string[] scenes = new string[] { "Assets/Scenes/Main.unity" };
string appName = PlayerSettings.productName + "_" + VersionMgr.instance.appVersion + GetTargetPlatfromAppPostfix();
string appName = PlayerSettings.productName + "_" + VersionMgr.appVersion + GetTargetPlatfromAppPostfix();
string outputPath = Application.dataPath + "/../Bin/";
if (!Directory.Exists(outputPath))
{
......@@ -147,7 +203,7 @@ public class BuildUtils
}
string appPath = Path.Combine(outputPath, appName);
// 执行打包APP
BuildPipeline.BuildPlayer(scenes, appPath, GetBuildTarget(), BuildOptions.None);
BuildPipeline.BuildPlayer(scenes, appPath, target, BuildOptions.None);
// 自动打开Bin目录
FastOpenTools.OpenFileOrDirectory("/../Bin");
GameLogger.Log("Build APP Done");
......@@ -158,9 +214,9 @@ public class BuildUtils
/// </summary>
private static void SetAppVersion()
{
PlayerSettings.bundleVersion = VersionMgr.instance.appVersion;
PlayerSettings.Android.bundleVersionCode = VersionMgr.VersionCode(VersionMgr.instance.appVersion);
PlayerSettings.iOS.buildNumber = VersionMgr.instance.appVersion;
PlayerSettings.bundleVersion = VersionMgr.appVersion;
PlayerSettings.Android.bundleVersionCode = VersionMgr.VersionCode(VersionMgr.appVersion);
PlayerSettings.iOS.buildNumber = VersionMgr.appVersion;
}
/// <summary>
......@@ -175,16 +231,16 @@ public class BuildUtils
/// <summary>
/// 设置IL2CPP还是Mono
/// </summary>
private static void SetScriptingBackend(bool il2cpp)
private static void SetScriptingBackend(BuildTargetGroup target, bool il2cpp)
{
if (il2cpp)
{
PlayerSettings.SetScriptingBackend(GetBuildTargetGroup(), ScriptingImplementation.IL2CPP);
PlayerSettings.SetScriptingBackend(target, ScriptingImplementation.IL2CPP);
PlayerSettings.Android.targetArchitectures = AndroidArchitecture.ARM64 | AndroidArchitecture.ARMv7;
}
else
{
PlayerSettings.SetScriptingBackend(GetBuildTargetGroup(), ScriptingImplementation.Mono2x);
PlayerSettings.SetScriptingBackend(target, ScriptingImplementation.Mono2x);
PlayerSettings.Android.targetArchitectures = AndroidArchitecture.ARMv7;
}
}
......@@ -212,148 +268,6 @@ public class BuildUtils
#endif
}
/// <summary>
/// 生成原始lua代码的md5
/// </summary>
public static void GenOriginalLuaFrameworkMD5File()
{
VersionMgr.instance.Init();
JsonData jd = GetOriginalLuaframeworkMD5Json();
var jsonStr = JsonMapper.ToJson(jd);
jsonStr = jsonStr.Replace(",", ",\n");
if (!Directory.Exists(BIN_PATH))
{
Directory.CreateDirectory(BIN_PATH);
}
using (StreamWriter sw = new StreamWriter(BIN_PATH + "LuaFrameworkFiles_" + VersionMgr.instance.appVersion + ".json"))
{
sw.Write(jsonStr);
}
GameLogger.Log("GenLuaframeworkMd5 Done");
}
public static JsonData GetOriginalLuaframeworkMD5Json()
{
var sourceDirs = new string[] {
Application.dataPath + "/LuaFramework/Lua",
Application.dataPath + "/LuaFramework/ToLua/Lua",
};
JsonData jd = new JsonData();
foreach (var sourceDir in sourceDirs)
{
List<string> fileList = new List<string>();
fileList = GetFiles(sourceDir, false);
foreach (var luaFile in fileList)
{
if (!luaFile.EndsWith(".lua")) continue;
var md5 = LuaFramework.Util.md5file(luaFile);
var key = luaFile.Substring(luaFile.IndexOf("Assets/"));
jd[key] = md5;
}
}
return jd;
}
/// <summary>
/// 创建临时目录
/// </summary>
/// <returns></returns>
public static string CreateTmpDir(string dirName)
{
var tmpDir = string.Format(Application.dataPath + "/{0}/", dirName);
if (Directory.Exists(tmpDir))
{
Directory.Delete(tmpDir, true);
}
Directory.CreateDirectory(tmpDir);
return tmpDir;
}
/// <summary>
/// 删除目录
/// </summary>
public static void DeleteDir(string targetDir)
{
// 删除对应的meta文件
if (File.Exists(targetDir + ".meta"))
{
File.Delete(targetDir + ".meta");
}
if (Directory.Exists(targetDir))
{
Directory.Delete(targetDir, true);
}
AssetDatabase.Refresh();
}
/// <summary>
/// 拷贝Lua到目标目录,并做加密处理
/// </summary>
/// <param name="sourceDirs">源目录列表</param>
/// <param name="targetPath">母包目录</param>
public static void CopyLuaToBundleDir(List<string> luaFiles, string targetPath)
{
foreach (var luaFile in luaFiles)
{
if (luaFile.EndsWith(".meta")) continue;
var luaFileFullPath = Application.dataPath + "/../" + luaFile;
// 由于Build AssetBundle不识别.lua文件,所以拷贝一份到临时目录,统一加上.bytes结尾
var targetFile = targetPath + luaFile.Replace("Assets", "") + ".bytes";
var targetDir = Path.GetDirectoryName(targetFile);
if (!Directory.Exists(targetDir))
Directory.CreateDirectory(targetDir);
// 做下加密
byte[] bytes = File.ReadAllBytes(luaFileFullPath);
byte[] encryptBytes = AESEncrypt.Encrypt(bytes);
File.WriteAllBytes(targetFile, encryptBytes);
}
AssetDatabase.Refresh();
}
public static BuildTarget mbuildTarget;
/// <summary>
/// 获取当前平台
/// </summary>
public static BuildTarget GetBuildTarget()
{
if (((int)mbuildTarget) > 0)
return mbuildTarget;
#if UNITY_STANDALONE
return BuildTarget.StandaloneWindows;
#elif UNITY_ANDROID
return BuildTarget.Android;
#else
return BuildTarget.iOS;
#endif
}
public static BuildTargetGroup GetBuildTargetGroup()
{
#if UNITY_STANDALONE
return BuildTargetGroup.Standalone;
#elif UNITY_ANDROID
return BuildTargetGroup.Android;
#else
return BuildTargetGroup.iOS;
#endif
}
public static string GetNameByPath(string path)
{
if (string.IsNullOrEmpty(path)) return string.Empty;
var name = string.Empty;
path = path.Replace("\\", "/");
int lastIndex = path.LastIndexOf("/");
if (lastIndex < 0) return string.Empty;
name = path.Remove(0, lastIndex + 1);
return name;
}
/// <summary>
/// 获取目标平台APP后缀
......@@ -377,10 +291,4 @@ public class BuildUtils
return ".ipa";
#endif
}
public static string BIN_PATH
{
get { return Application.dataPath + "/../Bin/"; }
}
}
......@@ -3,5 +3,5 @@ guid: 199160ff47e23224c95d65c984954500
DefaultImporter:
externalObjects: {}
userData:
assetBundleName: lua_backpack
assetBundleVariant: lua
assetBundleName:
assetBundleVariant:
......@@ -3,5 +3,5 @@ guid: f262fafd1a116be449b0e4fbe513139c
DefaultImporter:
externalObjects: {}
userData:
assetBundleName: lua_common
assetBundleVariant: lua
assetBundleName:
assetBundleVariant:
......@@ -3,5 +3,5 @@ guid: 123228e04c588494a992383aba5d859f
DefaultImporter:
externalObjects: {}
userData:
assetBundleName: lua_common
assetBundleVariant: lua
assetBundleName:
assetBundleVariant:
......@@ -3,5 +3,5 @@ guid: 575cb3185279eee42a2931e5c95482ba
DefaultImporter:
externalObjects: {}
userData:
assetBundleName: lua_common
assetBundleVariant: lua
assetBundleName:
assetBundleVariant:
......@@ -3,5 +3,5 @@ guid: bea93c13ec47b2045b55eb9fae7e414d
DefaultImporter:
externalObjects: {}
userData:
assetBundleName: lua_common
assetBundleVariant: lua
assetBundleName:
assetBundleVariant:
......@@ -3,5 +3,5 @@ guid: 1d01e8cc82fe215478bdcc99678a58a4
DefaultImporter:
externalObjects: {}
userData:
assetBundleName: lua_gamehall
assetBundleVariant: lua
assetBundleName:
assetBundleVariant:
......@@ -3,5 +3,5 @@ guid: f50364706b1af154ab6f89d0fa69a1d5
DefaultImporter:
externalObjects: {}
userData:
assetBundleName: lua_login
assetBundleVariant: lua
assetBundleName:
assetBundleVariant:
......@@ -3,5 +3,5 @@ guid: fbf73eacb636e14409490d9ce576bb19
DefaultImporter:
externalObjects: {}
userData:
assetBundleName: lua_redpoint
assetBundleVariant: lua
assetBundleName:
assetBundleVariant:
......@@ -3,5 +3,5 @@ guid: f7f9166539ef23840a27ebdd53a7274a
DefaultImporter:
externalObjects: {}
userData:
assetBundleName: lua_tree
assetBundleVariant: lua
assetBundleName:
assetBundleVariant:
......@@ -11,7 +11,7 @@ namespace LuaFramework
{
public static class CustomSettings
{
public static string FrameworkPath = AppConst.FrameworkRoot;
public static string FrameworkPath = Application.dataPath + "/LuaFramework";
public static string saveDir = FrameworkPath + "/ToLua/Source/Generate/";
public static string luaDir = FrameworkPath + "/Lua/";
public static string toluaBaseType = FrameworkPath + "/ToLua/BaseType/";
......
......@@ -274,41 +274,6 @@ namespace LuaFramework
}
/// <summary>
/// 防止初学者不按步骤来操作
/// </summary>
/// <returns></returns>
static int CheckRuntimeFile()
{
if (!Application.isEditor) return 0;
string streamDir = Application.dataPath + "/StreamingAssets/";
if (!Directory.Exists(streamDir))
{
return -1;
}
else
{
string[] files = Directory.GetFiles(streamDir);
if (files.Length == 0) return -1;
if (!File.Exists(streamDir + "files.txt"))
{
return -1;
}
}
string sourceDir = AppConst.FrameworkRoot + "/ToLua/Source/Generate/";
if (!Directory.Exists(sourceDir))
{
return -2;
}
else
{
string[] files = Directory.GetFiles(sourceDir);
if (files.Length == 0) return -2;
}
return 0;
}
/// <summary>
/// 检查运行环境
/// </summary>
......
......@@ -2528,7 +2528,7 @@ public static class ToLuaExport
}
catch (System.Exception e)
{
Debugger.Log(e);
}
}
......
......@@ -24,8 +24,6 @@ public class AppConstWrap
L.RegVar("UseFileList", get_UseFileList, set_UseFileList);
L.RegVar("LuaFileListName", get_LuaFileListName, set_LuaFileListName);
L.RegVar("LuaSecretKey", get_LuaSecretKey, set_LuaSecretKey);
L.RegVar("ABpath", get_ABpath, set_ABpath);
L.RegVar("FrameworkRoot", get_FrameworkRoot, null);
L.EndClass();
}
......@@ -207,34 +205,6 @@ public class AppConstWrap
}
}
[MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
static int get_ABpath(IntPtr L)
{
try
{
ToLua.Push(L, AppConst.ABpath);
return 1;
}
catch(Exception e)
{
return LuaDLL.toluaL_exception(L, e);
}
}
[MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
static int get_FrameworkRoot(IntPtr L)
{
try
{
LuaDLL.lua_pushstring(L, AppConst.FrameworkRoot);
return 1;
}
catch(Exception e)
{
return LuaDLL.toluaL_exception(L, e);
}
}
[MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
static int set_UserId(IntPtr L)
{
......@@ -324,20 +294,5 @@ public class AppConstWrap
return LuaDLL.toluaL_exception(L, e);
}
}
[MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
static int set_ABpath(IntPtr L)
{
try
{
string[] arg0 = ToLua.CheckStringArray(L, 2);
AppConst.ABpath = arg0;
return 0;
}
catch(Exception e)
{
return LuaDLL.toluaL_exception(L, e);
}
}
}
......@@ -30,7 +30,7 @@ public static class LuaBinder
UnityEngine_ComponentWrap.Register(L);
UnityEngine_TransformWrap.Register(L);
UnityEngine_CameraWrap.Register(L);
UnityEngine_AudioSourceWrap.Register(L);
//UnityEngine_AudioSourceWrap.Register(L);
UnityEngine_BehaviourWrap.Register(L);
UnityEngine_GameObjectWrap.Register(L);
UnityEngine_TrackedReferenceWrap.Register(L);
......
fileFormatVersion: 2
guid: 4ed6191738bb7644a88495ca478be2e0
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
......@@ -19,7 +19,7 @@ MonoBehaviour:
m_RendererDataList:
- {fileID: 11400000, guid: d44d7117fabc4db4ea5ce2dfecf01ab4, type: 2}
m_DefaultRendererIndex: 0
m_RequireDepthTexture: 0
m_RequireDepthTexture: 1
m_RequireOpaqueTexture: 0
m_OpaqueDownsampling: 1
m_SupportsTerrainHoles: 1
......
......@@ -4,5 +4,5 @@ NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 4343727234628468602
userData:
assetBundleName: resassets_atlas
assetBundleName: atlas
assetBundleVariant: res
......@@ -3,5 +3,5 @@ guid: 1c22ca9e188a2d9459e395427ba2820f
PrefabImporter:
externalObjects: {}
userData:
assetBundleName: resassets_common
assetBundleName: common
assetBundleVariant: res
......@@ -3,5 +3,5 @@ guid: f56033bbcd9254343b7abbc36f8aaf13
PrefabImporter:
externalObjects: {}
userData:
assetBundleName: resassets_common
assetBundleName: common
assetBundleVariant: res
......@@ -3,5 +3,5 @@ guid: 28440e80fc7fc47489d3c059f5629308
PrefabImporter:
externalObjects: {}
userData:
assetBundleName: resassets_common
assetBundleName: common
assetBundleVariant: res
......@@ -3,5 +3,5 @@ guid: 234734c29ab8906449b8a062918aab22
PrefabImporter:
externalObjects: {}
userData:
assetBundleName: resassets_common
assetBundleName: common
assetBundleVariant: res
......@@ -3,5 +3,5 @@ guid: e129108de049b0c44aa9f77a5d8f5ea0
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName: resassets_config
assetBundleName: config
assetBundleVariant: res
......@@ -3,5 +3,5 @@ guid: 4d4f2a91693b7b24da3933eec8dac3b1
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName: resassets_config
assetBundleName: config
assetBundleVariant: res
......@@ -3,5 +3,5 @@ guid: f690dba350086e14b89084fd76c50f73
PrefabImporter:
externalObjects: {}
userData:
assetBundleName: resassets_gamehall
assetBundleName: gamehall
assetBundleVariant: res
......@@ -3,5 +3,5 @@ guid: 8343d136503ac75458af4378aba49aac
PrefabImporter:
externalObjects: {}
userData:
assetBundleName: resassets_login
assetBundleName: login
assetBundleVariant: res
fileFormatVersion: 2
guid: eff996aadd0c06f41ac7eaaf2b63ce6c
NativeFormatImporter:
guid: 8a3cc36a3ddc53040b3d4eb31078b912
PrefabImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:
......@@ -3,5 +3,5 @@ guid: 032d5dff58340ff48aba85771be07fdc
PrefabImporter:
externalObjects: {}
userData:
assetBundleName: resassets_menu
assetBundleName: menu
assetBundleVariant: res
......@@ -3,5 +3,5 @@ guid: e2c5de8f3f0256146be9e59c5abb3e49
PrefabImporter:
externalObjects: {}
userData:
assetBundleName: resassets_menu
assetBundleName: menu
assetBundleVariant: res
[{"Name":"Android","Length":1786,"MD5":"28a47493526139d9aac5dc6c3749a6a5"},{"Name":"atlas.res","Length":7378,"MD5":"5a42fc817362d95e82e5ef36a4b3b03a"},{"Name":"common.res","Length":13355,"MD5":"1b7e92d781589f1aba4768519f70b134"},{"Name":"Compare_1.0.0.0.json","Length":1343,"MD5":"610077d1ae030abe3d98960404692c6d"},{"Name":"config.res","Length":1874,"MD5":"c592ac8af845807b6c5bd9cca35b97b2"},{"Name":"gamehall.res","Length":15245,"MD5":"a101456348888e3021ab2f52ce420f99"},{"Name":"login.res","Length":19375,"MD5":"d1f804465ca88216a43c1e8a9f66eddb"},{"Name":"luabyte.lua","Length":17785,"MD5":"62a911697f2f6d86168884f9adb4b116"},{"Name":"menu.res","Length":5599051,"MD5":"94f51a21f40ca469a44ab72dd8de9b3a"}]
\ No newline at end of file
fileFormatVersion: 2
guid: f35ce68d3370aa94592c55ced0982692
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 16995157, guid: 68195884708a94c43b3ce72d43d9d52a, type: 3}
m_Name: DOTweenSettings
m_EditorClassIdentifier:
useSafeMode: 1
safeModeOptions:
logBehaviour: 2
nestedTweenFailureBehaviour: 0
timeScale: 1
unscaledTimeScale: 1
useSmoothDeltaTime: 0
maxSmoothUnscaledTime: 0.15
rewindCallbackMode: 0
showUnityEditorReport: 0
logBehaviour: 0
drawGizmos: 1
defaultRecyclable: 0
defaultAutoPlay: 3
defaultUpdateType: 0
defaultTimeScaleIndependent: 0
defaultEaseType: 6
defaultEaseOvershootOrAmplitude: 1.70158
defaultEasePeriod: 0
defaultAutoKill: 1
defaultLoopType: 0
debugMode: 0
debugStoreTargetId: 1
showPreviewPanel: 1
storeSettingsLocation: 0
modules:
showPanel: 0
audioEnabled: 1
physicsEnabled: 1
physics2DEnabled: 1
spriteEnabled: 1
uiEnabled: 1
textMeshProEnabled: 0
tk2DEnabled: 0
deAudioEnabled: 0
deUnityExtendedEnabled: 0
epoOutlineEnabled: 0
createASMDEF: 0
showPlayingTweens: 0
showPausedTweens: 0
{"app_version":"1.0.0.0","res_version":"1.0.0.0"}
\ No newline at end of file
{"appVersion":"1.0.0.0"}
\ No newline at end of file
fileFormatVersion: 2
guid: a3928e09b56d505458a52e7d98a4682f
guid: cd7ec466f6019784caebf51725e10fb0
folderAsset: yes
DefaultImporter:
externalObjects: {}
......
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!29 &1
OcclusionCullingSettings:
m_ObjectHideFlags: 0
serializedVersion: 2
m_OcclusionBakeSettings:
smallestOccluder: 5
smallestHole: 0.25
backfaceThreshold: 100
m_SceneGUID: 00000000000000000000000000000000
m_OcclusionCullingData: {fileID: 0}
--- !u!104 &2
RenderSettings:
m_ObjectHideFlags: 0
serializedVersion: 9
m_Fog: 0
m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
m_FogMode: 3
m_FogDensity: 0.01
m_LinearFogStart: 0
m_LinearFogEnd: 300
m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}
m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}
m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}
m_AmbientIntensity: 1
m_AmbientMode: 0
m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0}
m_HaloStrength: 0.5
m_FlareStrength: 1
m_FlareFadeSpeed: 3
m_HaloTexture: {fileID: 0}
m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
m_DefaultReflectionMode: 0
m_DefaultReflectionResolution: 128
m_ReflectionBounces: 1
m_ReflectionIntensity: 1
m_CustomReflection: {fileID: 0}
m_Sun: {fileID: 0}
m_IndirectSpecularColor: {r: 0.3731193, g: 0.38073996, b: 0.35872698, a: 1}
m_UseRadianceAmbientProbe: 0
--- !u!157 &3
LightmapSettings:
m_ObjectHideFlags: 0
serializedVersion: 12
m_GIWorkflowMode: 0
m_GISettings:
serializedVersion: 2
m_BounceScale: 1
m_IndirectOutputScale: 1
m_AlbedoBoost: 1
m_EnvironmentLightingMode: 0
m_EnableBakedLightmaps: 1
m_EnableRealtimeLightmaps: 1
m_LightmapEditorSettings:
serializedVersion: 12
m_Resolution: 2
m_BakeResolution: 40
m_AtlasSize: 1024
m_AO: 0
m_AOMaxDistance: 1
m_CompAOExponent: 0
m_CompAOExponentDirect: 0
m_ExtractAmbientOcclusion: 0
m_Padding: 2
m_LightmapParameters: {fileID: 0}
m_LightmapsBakeMode: 1
m_TextureCompression: 1
m_FinalGather: 0
m_FinalGatherFiltering: 1
m_FinalGatherRayCount: 1024
m_ReflectionCompression: 2
m_MixedBakeMode: 1
m_BakeBackend: 0
m_PVRSampling: 1
m_PVRDirectSampleCount: 32
m_PVRSampleCount: 512
m_PVRBounces: 2
m_PVREnvironmentSampleCount: 512
m_PVREnvironmentReferencePointCount: 2048
m_PVRFilteringMode: 0
m_PVRDenoiserTypeDirect: 0
m_PVRDenoiserTypeIndirect: 0
m_PVRDenoiserTypeAO: 0
m_PVRFilterTypeDirect: 0
m_PVRFilterTypeIndirect: 0
m_PVRFilterTypeAO: 0
m_PVREnvironmentMIS: 0
m_PVRCulling: 1
m_PVRFilteringGaussRadiusDirect: 1
m_PVRFilteringGaussRadiusIndirect: 5
m_PVRFilteringGaussRadiusAO: 2
m_PVRFilteringAtrousPositionSigmaDirect: 0.5
m_PVRFilteringAtrousPositionSigmaIndirect: 2
m_PVRFilteringAtrousPositionSigmaAO: 1
m_ExportTrainingData: 0
m_TrainingDataDestination: TrainingData
m_LightProbeSampleCountMultiplier: 4
m_LightingDataAsset: {fileID: 0}
m_LightingSettings: {fileID: 4890085278179872738, guid: 13e94923897725549a99260f23c2bdb2, type: 2}
--- !u!196 &4
NavMeshSettings:
serializedVersion: 2
m_ObjectHideFlags: 0
m_BuildSettings:
serializedVersion: 2
agentTypeID: 0
agentRadius: 0.5
agentHeight: 2
agentSlope: 45
agentClimb: 0.4
ledgeDropHeight: 0
maxJumpAcrossDistance: 0
minRegionArea: 2
manualCellSize: 0
cellSize: 0.16666667
manualTileSize: 0
tileSize: 256
accuratePlacement: 0
maxJobWorkers: 0
preserveTilesOutsideBounds: 0
debug:
m_Flags: 0
m_NavMeshData: {fileID: 0}
--- !u!1 &35528152
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 35528155}
- component: {fileID: 35528154}
- component: {fileID: 35528156}
- component: {fileID: 35528157}
m_Layer: 0
m_Name: Main Camera
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!20 &35528154
Camera:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 35528152}
m_Enabled: 1
serializedVersion: 2
m_ClearFlags: 3
m_BackGroundColor: {r: 0, g: 0, b: 0, a: 0}
m_projectionMatrixMode: 1
m_GateFitMode: 2
m_FOVAxisMode: 0
m_SensorSize: {x: 36, y: 24}
m_LensShift: {x: 0, y: 0}
m_FocalLength: 50
m_NormalizedViewPortRect:
serializedVersion: 2
x: 0
y: 0
width: 1
height: 1
near clip plane: 0.3
far clip plane: 1000
field of view: 3
orthographic: 1
orthographic size: 5
m_Depth: 0
m_CullingMask:
serializedVersion: 2
m_Bits: 96
m_RenderingPath: -1
m_TargetTexture: {fileID: 0}
m_TargetDisplay: 0
m_TargetEye: 3
m_HDR: 1
m_AllowMSAA: 1
m_AllowDynamicResolution: 0
m_ForceIntoRT: 0
m_OcclusionCulling: 1
m_StereoConvergence: 10
m_StereoSeparation: 0.022
--- !u!4 &35528155
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 35528152}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: -10}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &35528156
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 35528152}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: a79441f348de89743a2939f4d699eac1, type: 3}
m_Name:
m_EditorClassIdentifier:
m_RenderShadows: 1
m_RequiresDepthTextureOption: 2
m_RequiresOpaqueTextureOption: 2
m_CameraType: 0
m_Cameras: []
m_RendererIndex: -1
m_VolumeLayerMask:
serializedVersion: 2
m_Bits: 1
m_VolumeTrigger: {fileID: 0}
m_VolumeFrameworkUpdateModeOption: 2
m_RenderPostProcessing: 0
m_Antialiasing: 0
m_AntialiasingQuality: 2
m_StopNaN: 0
m_Dithering: 0
m_ClearDepth: 1
m_AllowXRRendering: 1
m_RequiresDepthTexture: 0
m_RequiresColorTexture: 0
m_Version: 2
--- !u!81 &35528157
AudioListener:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 35528152}
m_Enabled: 1
--- !u!1 &670355789
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 670355793}
- component: {fileID: 670355792}
- component: {fileID: 670355791}
- component: {fileID: 670355790}
m_Layer: 5
m_Name: Canvas
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &670355790
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 670355789}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3}
m_Name:
m_EditorClassIdentifier:
m_IgnoreReversedGraphics: 1
m_BlockingObjects: 0
m_BlockingMask:
serializedVersion: 2
m_Bits: 2147483647
--- !u!114 &670355791
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 670355789}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3}
m_Name:
m_EditorClassIdentifier:
m_UiScaleMode: 1
m_ReferencePixelsPerUnit: 100
m_ScaleFactor: 1
m_ReferenceResolution: {x: 1920, y: 1080}
m_ScreenMatchMode: 0
m_MatchWidthOrHeight: 0
m_PhysicalUnit: 3
m_FallbackScreenDPI: 96
m_DefaultSpriteDPI: 96
m_DynamicPixelsPerUnit: 1
m_PresetInfoIsWorld: 0
--- !u!223 &670355792
Canvas:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 670355789}
m_Enabled: 1
serializedVersion: 3
m_RenderMode: 1
m_Camera: {fileID: 35528154}
m_PlaneDistance: 100
m_PixelPerfect: 0
m_ReceivesEvents: 1
m_OverrideSorting: 0
m_OverridePixelPerfect: 0
m_SortingBucketNormalizedSize: 0
m_AdditionalShaderChannelsFlag: 27
m_SortingLayerID: 0
m_SortingOrder: 0
m_TargetDisplay: 0
--- !u!224 &670355793
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 670355789}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 0, y: 0, z: 0}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 1738668703}
- {fileID: 1967082374}
- {fileID: 1878497129}
m_Father: {fileID: 0}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0, y: 0}
--- !u!1 &865741007
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 865741010}
- component: {fileID: 865741009}
- component: {fileID: 865741008}
m_Layer: 0
m_Name: EventSystem
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &865741008
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 865741007}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3}
m_Name:
m_EditorClassIdentifier:
m_SendPointerHoverToParent: 1
m_HorizontalAxis: Horizontal
m_VerticalAxis: Vertical
m_SubmitButton: Submit
m_CancelButton: Cancel
m_InputActionsPerSecond: 10
m_RepeatDelay: 0.5
m_ForceModuleActive: 0
--- !u!114 &865741009
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 865741007}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3}
m_Name:
m_EditorClassIdentifier:
m_FirstSelected: {fileID: 0}
m_sendNavigationEvents: 1
m_DragThreshold: 10
--- !u!4 &865741010
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 865741007}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 2
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1738668702
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1738668703}
- component: {fileID: 1738668705}
m_Layer: 5
m_Name: BgPanel
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &1738668703
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1738668702}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 670355793}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 200, y: 200}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &1738668705
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1738668702}
m_CullTransparentMesh: 1
--- !u!1 &1878497128
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1878497129}
- component: {fileID: 1878497131}
m_Layer: 5
m_Name: TopPanel
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &1878497129
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1878497128}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 1
m_Children: []
m_Father: {fileID: 670355793}
m_RootOrder: 2
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &1878497131
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1878497128}
m_CullTransparentMesh: 1
--- !u!1 &1967082373
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1967082374}
- component: {fileID: 1967082376}
- component: {fileID: 1967082377}
m_Layer: 5
m_Name: GamePanel
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &1967082374
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1967082373}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 670355793}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &1967082376
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1967082373}
m_CullTransparentMesh: 1
--- !u!61 &1967082377
BoxCollider2D:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1967082373}
m_Enabled: 1
m_Density: 1
m_Material: {fileID: 0}
m_IsTrigger: 0
m_UsedByEffector: 0
m_UsedByComposite: 0
m_Offset: {x: 0, y: 0}
m_SpriteTilingProperty:
border: {x: 0, y: 0, z: 0, w: 0}
pivot: {x: 0, y: 0}
oldSize: {x: 0, y: 0}
newSize: {x: 0, y: 0}
adaptiveTilingThreshold: 0
drawMode: 0
adaptiveTiling: 0
m_AutoTiling: 0
serializedVersion: 2
m_Size: {x: 1, y: 1}
m_EdgeRadius: 0
......@@ -2,21 +2,13 @@
public class AppConst
{
public const bool DebugMode = false; //调试模式-用于内部测试
/// <summary>
/// 如果想删掉框架自带的例子,那这个例子模式必须要
/// 关闭,否则会出现一些错误。
/// </summary>
public const bool ExampleMode = false; //例子模式
public const bool DebugMode = true; //调试模式-用于内部测试
/// <summary>
/// 如果开启更新模式,前提必须启动框架自带服务器端。
/// 否则就需要自己将StreamingAssets里面的所有内容
/// 复制到自己的Webserver上面,并修改下面的WebUrl。
/// </summary>
//public const bool UpdateMode = false; //更新模式-默认关闭
//public const bool LuaByteMode = false; //Lua字节码模式-默认关闭
public const bool UpdateMode = false; //更新模式-默认关闭 避免没有配置热更服务器导致的报错
public const int TimerInterval = 1;
......@@ -35,19 +27,4 @@ public class AppConst
public static bool UseFileList = true; //是否启用配置的filelist
public static string LuaFileListName = "LuaFileList.lua"; //要加载的lua 文件列表
public static string LuaSecretKey = "osdkqwudWQHd*+*/*"; //lua 加密用的密钥
public static string FrameworkRoot
{
get
{
return Application.dataPath + "/" + AppName;
}
}
//Assets目录下需要打AB包的路径
public static string[] ABpath = {
Application.dataPath + "/GameRes",
Application.dataPath + "/RawAssets",
Application.dataPath + "/MLua"
};
}
\ No newline at end of file
......@@ -2,7 +2,6 @@ using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking;
using LuaFramework;
using System;
using LitJson;
using System.Security.Cryptography.X509Certificates;
......@@ -11,7 +10,6 @@ using System.Net;
using System.IO;
using Ionic.Zip;
/// <summary>
/// 热更新逻辑
/// </summary>
......@@ -46,6 +44,33 @@ public class HotUpdater
public Action<float> actionUpdateProgress;
private DownloadingInfo m_downloadingInfo;
public class UpdateInfo
{
public string appVersion;
public string appUrl;
public List<PackInfo> updateList;
}
public class PackInfo
{
public string resVersion;
public string md5;
public int size;
public string url;
public override string ToString()
{
return string.Format("resVersion: {0}, md5: {1}, size: {2}, url: {3}", resVersion, md5, size, url);
}
}
public struct DownloadingInfo
{
public long curDownloadSize;
public long targetDownloadSize;
public int packIndex;
public int totalPackCount;
}
/// <summary>
/// 需要整包更新
......@@ -161,27 +186,27 @@ public class HotUpdater
m_hasNextUpdateBtn = false;
foreach (var info in updateInfos)
{
if (VersionMgr.CompareVersion(info.appVersion, VersionMgr.instance.appVersion) > 0)
{
m_needFullAppUpdate = true;
if (VersionMgr.CompareVersion(info.appVersion, bigestAppVer) > 0)
{
bigestAppVer = info.appVersion;
m_fullAppUpdateUrl = info.appUrl;
}
}
if (VersionMgr.CompareVersion(info.appVersion, VersionMgr.instance.appVersion) == 0)
{
m_hasNextUpdateBtn = true;
foreach (var pack in info.updateList)
{
if (VersionMgr.CompareVersion(pack.resVersion, VersionMgr.instance.resVersion) > 0)
{
m_sameAppVerResUpdate = true;
m_packList.Add(pack);
}
}
}
//if (VersionMgr.CompareVersion(info.appVersion, VersionMgr.appVersion) > 0)
//{
// m_needFullAppUpdate = true;
// if (VersionMgr.CompareVersion(info.appVersion, bigestAppVer) > 0)
// {
// bigestAppVer = info.appVersion;
// m_fullAppUpdateUrl = info.appUrl;
// }
//}
//if (VersionMgr.CompareVersion(info.appVersion, VersionMgr.appVersion) == 0)
//{
// m_hasNextUpdateBtn = true;
// foreach (var pack in info.updateList)
// {
// if (VersionMgr.CompareVersion(pack.resVersion, VersionMgr.resVersion) > 0)
// {
// m_sameAppVerResUpdate = true;
// m_packList.Add(pack);
// }
// }
//}
}
GameLogger.Log("m_packList.Count: " + m_packList.Count);
}
......@@ -316,7 +341,7 @@ public class HotUpdater
// 删除zip
DeleteFile(filePath);
// 更新版本号
VersionMgr.instance.UpdateResVersion(packInfo.resVersion);
VersionMgr.UpdateResVersion(packInfo.resVersion);
// 请求下载下一个zip
StartDownloadResPack(true);
}
......@@ -397,34 +422,6 @@ public class HotUpdater
if (null != m_downloader)
m_downloader.Dispose();
}
public class UpdateInfo
{
public string appVersion;
public string appUrl;
public List<PackInfo> updateList;
}
public class PackInfo
{
public string resVersion;
public string md5;
public int size;
public string url;
public override string ToString()
{
return string.Format("resVersion: {0}, md5: {1}, size: {2}, url: {3}", resVersion, md5, size, url);
}
}
public struct DownloadingInfo
{
public long curDownloadSize;
public long targetDownloadSize;
public int packIndex;
public int totalPackCount;
}
}
......@@ -50,7 +50,8 @@ public class StartUp : MonoBehaviour
// 日志
GameLogger.Init();
LogCat.Init();
if(AppConst.DebugMode)
LogCat.Init();
// 网络消息注册 重写
m_networkMsgEventRegister = new NetworkMsgEventRegister();
......@@ -59,9 +60,6 @@ public class StartUp : MonoBehaviour
// 界面管理器
PanelMgr.instance.Init();
// 版本号
VersionMgr.instance.Init();
// 预加载AssetBundle
AssetBundleMgr.instance.PreloadAssetBundles();
......
......@@ -3,37 +3,55 @@ using LitJson;
using System.IO;
public class VersionMgr
{
/// <summary>
/// 游戏版本号
/// 游戏版本号
/// 注释:1号位是整包更新标记,必须重新下载客户端
/// 3号位是大版本更新标记,会清除本地全部热更包,重新下载
/// 4号位是增量热更标记位,更新时自动累加,只下载对比差异
/// 2号位 尚未定义,可自行拓展
/// </summary>
public string appVersion { get; private set; }
public static string appVersion = "1.0.0.0";
/// <summary>
/// 资源版本号(热更新增加这个版本号)
/// 热更新版本号
/// </summary>
public string resVersion { get; private set; }
private static string cacheResVersionFile
{
get
{
return Application.persistentDataPath + "/Update/version.txt";
}
}
public void Init()
/// <summary>
/// 返回本地最新版本号
/// </summary>
public static string GetVersion()
{
// 从文件中读取版本号
var versionText = Resources.Load<TextAsset>("version").text;
var jsonData = JsonMapper.ToObject(versionText);
appVersion = jsonData["app_version"].ToString();
resVersion = jsonData["res_version"].ToString();
var versionText = Resources.Load<TextAsset>("version");
if(versionText != null)
{
var jsonData = JsonMapper.ToObject(versionText.text);
appVersion = jsonData["appVersion"].ToString();
}
// 从缓存中读取资源版本号
var cacheResVersion = ReadCacheResVersion();
// 如果缓存的版本号比文件中的版本号大,以缓存的为准(因为热更新会增加缓存的资源版本号)
if (CompareVersion(cacheResVersion, resVersion) > 0)
if (CompareVersion(cacheResVersion, appVersion) > 0)
{
resVersion = cacheResVersion;
appVersion = cacheResVersion;
}
GameLogger.LogGreen("最新版本号:" + appVersion);
return appVersion;
}
/// <summary>
/// 读取缓存的资源版本号
/// </summary>
private string ReadCacheResVersion()
private static string ReadCacheResVersion()
{
if (File.Exists(cacheResVersionFile))
{
......@@ -51,52 +69,31 @@ public class VersionMgr
/// <summary>
/// 更新资源版本号
/// </summary>
public void UpdateResVersion(string resVersion)
public static void UpdateResVersion(string version)
{
this.resVersion = resVersion;
var dir = Path.GetDirectoryName(cacheResVersionFile);
appVersion = version;
var dir = Path.GetDirectoryName(cacheResVersionFile);
if (Directory.Exists(dir))
Directory.CreateDirectory(dir);
using (var f = File.OpenWrite(cacheResVersionFile))
{
using(StreamWriter sw = new StreamWriter(f))
{
sw.Write(resVersion);
sw.Write(appVersion);
}
}
GameLogger.LogGreen("更新本地缓存版本号:" + resVersion);
}
/// <summary>
/// 删除缓存的资源版本号
/// </summary>
public void DeleteCacheResVersion()
{
if(File.Exists(cacheResVersionFile))
{
File.Delete(cacheResVersionFile);
}
GameLogger.LogGreen("更新本地缓存版本号:" + appVersion);
}
/// <summary>
/// 对比两个版本号的大小
/// </summary>
/// <param name="v1">版本号1</param>
/// <param name="v2">版本号2</param>
/// <returns>1:v1比v2大,0:v1等于v2,-1:v1小于v2</returns>
public static int CompareVersion(string v1, string v2)
{
if (v1 == v2) return 0;
string[] v1Array = v1.Split('.');
string[] v2Array = v2.Split('.');
for (int i = 0, len = v1Array.Length; i < len; ++i)
{
if (int.Parse(v1Array[i]) < int.Parse(v2Array[i]))
return -1;
else if (int.Parse(v1Array[i]) > int.Parse(v2Array[i]))
return 1;
}
return 0;
int intv1 = VersionCode(v1);
int intv2 = VersionCode(v2);
return intv1 - intv2;
}
/// <summary>
......@@ -116,26 +113,4 @@ public class VersionMgr
}
return int.Parse(result);
}
/// <summary>
/// 热更新版本号
/// </summary>
private string cacheResVersionFile
{
get
{
return Application.persistentDataPath + "/Update/version.txt";
}
}
private static VersionMgr s_instance;
public static VersionMgr instance
{
get
{
if (null == s_instance)
s_instance = new VersionMgr();
return s_instance;
}
}
}
......@@ -27,10 +27,10 @@ EditorUserSettings:
value: 18135939215a0a5004000b0e15254b524c030a3f2964643d120d1230e9e93a3fd6e826abbd3c3e302a07a37e0901373ae01e0008f707250d171df81a53a5405d41895ac825e0100ec20313c0d91cddccd3d0c7efcca9bd88908fecb0f9cfddf1eff4e7a1b1eae482f0fea6e4e1928b86d888ed979f928797a7cf
flags: 0
UnityEditor.ShaderGraph.FloatingWindowsLayout2:
value: 181344140043005e1a220d3b1f364b524c0c5a27130c293326201334cee5322ca0bd30e8eb293a707b0fd0180b3d0a36fc0d3d04e649501f031bf84253f22f2514d70ccc19c91333cd1f0fcbd95f8bb39b8698a8d5d4cfd7ccd6bafdfae4eff4daf7a3e8afbcbe9afae1aefdedcff8f7c8d0b28696dd8bdff8888581e79d829f9bcfc78c8dd581958990bd90
value: 181344140043005e1a220d3b1f364b524c0c5a27130c293326201334cee5322ca0bd30e8eb293a707b0fd0180b3d0a36fc0d3d04e649500d1002ee0b5dbd1d2c27c00ad113cb1e10e41f1addc80993b9859884a69ae6d8f0d1cda9e8fbfefaf9f9dea3fdb9ade882f0ffb0e1e380cafbf2c3adc18e9cd285a2908b87ec8a9c8395949c9483d38a8297ddbd90bf
flags: 0
UnityEditor.ShaderGraph.InspectorWindow:
value: 18135939215a0a5004000b0e15254b524c1119263f2d6a722016393ce1eb3d36e5d339f9a560393d3511ea7046333e09f7181d02f50a06241708ee0b05bd4a435f95548717f73713d91006c1c309d0effad0d2f9ddffa5828e91f0beb6fdd1cbfceba0b9f0b3bed8e8f5ade1ff8c978883d3f59e9e919c89eacfcc
value: 18135939215a0a5004000b0e15254b524c1119263f2d6a722016393ce1eb3d36e5d339f9a5602b2e2c07a37e0901373ae01e0008f707250d171df81a53a541475f95548717f73713d91006c1c309d0effad0d2f9ddffa5828e91f0beb6fdd1cbfceba0b9f0b3bed8e8f5ade1ff8c978883d3f59e9e919c89eacfcc
flags: 0
vcSharedLogLevel:
value: 0d5e400f0650
......
......@@ -19,7 +19,7 @@ MonoBehaviour:
width: 1920
height: 997
m_ShowMode: 4
m_Title: Console
m_Title: Project
m_RootView: {fileID: 2}
m_MinSize: {x: 875, y: 471}
m_MaxSize: {x: 10000, y: 10000}
......@@ -121,7 +121,7 @@ MonoBehaviour:
m_MinSize: {x: 400, y: 100}
m_MaxSize: {x: 32384, y: 8096}
vertical: 0
controlID: 46
controlID: 68
--- !u!114 &6
MonoBehaviour:
m_ObjectHideFlags: 52
......@@ -158,7 +158,7 @@ MonoBehaviour:
m_Enabled: 1
m_EditorHideFlags: 1
m_Script: {fileID: 12006, guid: 0000000000000000e000000000000000, type: 0}
m_Name: GameView
m_Name: SceneView
m_EditorClassIdentifier:
m_Children: []
m_Position:
......@@ -167,14 +167,14 @@ MonoBehaviour:
y: 0
width: 654
height: 947
m_MinSize: {x: 200, y: 200}
m_MaxSize: {x: 4000, y: 4000}
m_ActualView: {fileID: 12}
m_MinSize: {x: 202, y: 221}
m_MaxSize: {x: 4002, y: 4021}
m_ActualView: {fileID: 10}
m_Panes:
- {fileID: 10}
- {fileID: 12}
m_Selected: 1
m_LastSelected: 0
m_Selected: 0
m_LastSelected: 1
--- !u!114 &8
MonoBehaviour:
m_ObjectHideFlags: 52
......@@ -185,7 +185,7 @@ MonoBehaviour:
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 12006, guid: 0000000000000000e000000000000000, type: 0}
m_Name: ConsoleWindow
m_Name: ProjectBrowser
m_EditorClassIdentifier:
m_Children: []
m_Position:
......@@ -194,14 +194,14 @@ MonoBehaviour:
y: 0
width: 536
height: 947
m_MinSize: {x: 102, y: 121}
m_MaxSize: {x: 4002, y: 4021}
m_ActualView: {fileID: 14}
m_MinSize: {x: 232, y: 271}
m_MaxSize: {x: 10002, y: 10021}
m_ActualView: {fileID: 13}
m_Panes:
- {fileID: 13}
- {fileID: 14}
m_Selected: 1
m_LastSelected: 0
m_Selected: 0
m_LastSelected: 1
--- !u!114 &9
MonoBehaviour:
m_ObjectHideFlags: 52
......@@ -564,9 +564,9 @@ MonoBehaviour:
m_SceneHierarchy:
m_TreeViewState:
scrollPos: {x: 0, y: 0}
m_SelectedIDs: be0c0000
m_SelectedIDs:
m_LastClickedID: 0
m_ExpandedIDs: b0f8ffff38fbfffff4ffffff726a0000aa6a0000e8a0000020a100002ca1000072a10000
m_ExpandedIDs: 36d1ffff38fbffff128900005689000094890000
m_RenameOverlay:
m_UserAcceptedRename: 0
m_Name:
......@@ -702,8 +702,8 @@ MonoBehaviour:
m_Tooltip:
m_Pos:
serializedVersion: 2
x: 1037
y: 73
x: -30963
y: -31970
width: 534
height: 926
m_ViewDataDictionary: {fileID: 0}
......@@ -723,36 +723,36 @@ MonoBehaviour:
m_SkipHidden: 0
m_SearchArea: 1
m_Folders:
- Assets/LuaFramework/ToLua/Source/Generate
- Assets/Resources
m_Globs: []
m_OriginalText:
m_ViewMode: 1
m_StartGridSize: 64
m_StartGridSize: 58
m_LastFolders:
- Assets/LuaFramework/ToLua/Source/Generate
m_LastFoldersGridSize: -1
- Assets/Resources
m_LastFoldersGridSize: 58
m_LastProjectPath: D:\WorkSpace\Masterdulepre
m_LockTracker:
m_IsLocked: 0
m_FolderTreeState:
scrollPos: {x: 0, y: 0}
m_SelectedIDs: a06d0000
m_LastClickedID: 28064
m_ExpandedIDs: 00000000ec670000ee670000f0670000f2670000f4670000f6670000f8670000fa670000fc670000fe67000000680000026800000468000006680000086800000a6800000c6800000e68000010680000126800001468000016680000186800001a6800001a6a00001e6a0000426a0000466a00007c760000dc780000b27a0000967b000054af000066af00004cb100000ab30000ccb3000000ca9a3b
m_SelectedIDs: e66a0000
m_LastClickedID: 27366
m_ExpandedIDs: 0000000056680000586800005a6800005c6800005e68000060680000626800006468000066680000686800006a6800006c6800006e68000070680000726800007468000076680000786800007a6800007c6800007e68000080680000826800008468000086680000886800008a6800008c6800008e68000090680000926800009468000096680000986800009c680000a6680000a8680000aa6800008e8d0000ce92000000ca9a3b
m_RenameOverlay:
m_UserAcceptedRename: 0
m_Name: Redpoint
m_OriginalName: Redpoint
m_Name:
m_OriginalName:
m_EditFieldRect:
serializedVersion: 2
x: 0
y: 0
width: 0
height: 0
m_UserData: 45510
m_UserData: 0
m_IsWaitingForDelay: 0
m_IsRenaming: 0
m_OriginalEventType: 0
m_OriginalEventType: 11
m_IsRenamingFilename: 1
m_ClientGUIView: {fileID: 8}
m_SearchString:
......@@ -766,7 +766,7 @@ MonoBehaviour:
scrollPos: {x: 0, y: 0}
m_SelectedIDs:
m_LastClickedID: 0
m_ExpandedIDs: 00000000ec670000ee670000f0670000f2670000f4670000f6670000f8670000fa670000fc670000fe67000000680000026800000468000006680000086800000a6800000c6800000e68000010680000126800001468000016680000186800001a6800001c680000
m_ExpandedIDs: 0000000056680000586800005a6800005c6800005e68000060680000626800006468000066680000686800006a6800006c6800006e68000070680000726800007468000076680000786800007a6800007c6800007e68000080680000826800008468000086680000886800008a6800008c6800008e68000090680000926800009468000096680000986800009a6800009c6800009e680000a0680000a2680000a4680000a6680000a8680000aa680000
m_RenameOverlay:
m_UserAcceptedRename: 0
m_Name:
......@@ -791,10 +791,10 @@ MonoBehaviour:
m_Icon: {fileID: 0}
m_ResourceFile:
m_ListAreaState:
m_SelectedInstanceIDs: be0c0000
m_LastClickedInstanceID: 3262
m_SelectedInstanceIDs:
m_LastClickedInstanceID: 0
m_HadKeyboardFocusLastEvent: 0
m_ExpandedInstanceIDs: c6230000e05c0000f45c00007a8300001a6b0000086e00008c7d0000787d0000000000000e8a0000086b0000
m_ExpandedInstanceIDs: c6230000e05c0000f45c00007a8300001a6b0000086e00008c7d0000787d0000000000000e8a0000086b00005c6b0000
m_RenameOverlay:
m_UserAcceptedRename: 0
m_Name:
......@@ -818,8 +818,8 @@ MonoBehaviour:
m_Icon: {fileID: 0}
m_ResourceFile:
m_NewAssetIndexInList: -1
m_ScrollPosition: {x: 0, y: 1198.5}
m_GridSize: 64
m_ScrollPosition: {x: 0, y: 0}
m_GridSize: 58
m_SkipHiddenPackages: 0
m_DirectoriesAreaWidth: 302
--- !u!114 &14
......@@ -885,7 +885,7 @@ MonoBehaviour:
m_ControlHash: -371814159
m_PrefName: Preview_InspectorPreview
m_LastInspectedObjectInstanceID: -1
m_LastVerticalScrollValue: 594
m_LastVerticalScrollValue: 0
m_GlobalObjectId:
m_InspectorMode: 0
m_LockTracker:
......
......@@ -7,7 +7,7 @@ Masterdulepre是一个以积木效果为核心的卡牌对战游戏
Build:打包工具
PrefabBinder: UI绑定
-------------------(避免ab循环依赖)
-------------------
#### GameRes: 经过处理的熟肉资源文件夹
#### RawAssets: 未经过处理的熟生资源
......@@ -26,7 +26,7 @@ PrefabBinder: UI绑定
ConstDefine: 常量和配置
HotUpdate: 热更新
View: 游戏界面代码
Lua: 具体ui逻辑实现 和 单个卡牌效果具体实现
Lua: 具体ui逻辑实现 和 单个效果具体实现
#### Scripts/XFramework: 通用框架代码
XFramework:
......
UnityShader @ 721ba169
Subproject commit 721ba169fbc0f8859087418fef2dd4bc94096bc5
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册