예제 #1
0
    // [MenuItem("Hugula/Android IL2CPP Project publish ", false, 16)]
    static void BuildForAndroidProjectIL2CPP()
    {
        string path = "../../release/android_il2cpp";

        path = Path.GetFullPath(path);
        exportingAndroidProject = true;
        AndroidSettings();
        EditorUtils.DirectoryDelete(path);
        EditorUtils.CheckDirectory(path);
#if UNITY_5_6_OR_NEWER
        PlayerSettings.SetScriptingBackend(BuildTargetGroup.Android, ScriptingImplementation.IL2CPP);
#else
        PlayerSettings.SetPropertyInt("ScriptingBackend", (int)ScriptingImplementation.IL2CPP, BuildTargetGroup.Android);
#endif
        if (setting.ToLower().Contains("development"))
        {
            GenericBuild(GetBuildScenes(), path, BuildTarget.Android, BuildOptions.Development | BuildOptions.AcceptExternalModificationsToPlayer);
        }
        else
        {
            GenericBuild(GetBuildScenes(), path, BuildTarget.Android, BuildOptions.AcceptExternalModificationsToPlayer);
        }
        // PlayerSettings.SetPropertyInt("ScriptingBackend", (int)ScriptingImplementation.Mono2x, BuildTargetGroup.Android);
        CUtils.DebugCastTime("Time BuildForAndroidProjectIL2CPP End");
    }
예제 #2
0
 static void ExportRes()
 {
     Settings();
     CUtils.DebugCastTime("Time ExportRes Begin");
     ExportResources.exportPublish();//资源
     CUtils.DebugCastTime("Time exportPublish End");
 }
예제 #3
0
 // Use this for initialization
 void Start()
 {
     //load manifest
     CUtils.DebugCastTime("LoadingFirst");
     Hugula.Localization.language = PlayerPrefs.GetString("Language", Application.systemLanguage.ToString());
     LoadFirstHelper.LoadManifest(sceneAssetBundleName, sceneName);
 }
예제 #4
0
 static void OnSceneAbLoaded(CRequest req)
 {
             #if HUGULA_LOADER_DEBUG
     Debug.LogFormat("OnSceneAbLoaded {0} is done !", req.url);
             #endif
     CUtils.DebugCastTime("On " + sceneName + "Loaded");
 }
예제 #5
0
        /// <summary>
        /// Builds the asset bundles update A.
        /// </summary>
        public static void buildAssetBundlesUpdateAB()
        {
            EditorUtility.DisplayProgressBar("Generate FileList", "loading bundle manifest", 1 / 2);
            AssetDatabase.Refresh();
            string        readPath = BuildScript.GetFileStreamingOutAssetsPath();// 读取Streaming目录
            var           u3dList  = getAllChildFiles(readPath, @"\.meta$|\.manifest$|\.DS_Store$|\.u$", null, false);
            List <string> assets   = new List <string>();

            foreach (var s in u3dList)
            {
                string ab = GetAssetPath(s); //s.Replace(readPath, "").Replace("/", "").Replace("\\", "");
                assets.Add(ab);
            }

            readPath = BuildScript.GetLuaBytesResourcesPath();// 读取lua 目录
            u3dList  = getAllChildFiles(readPath, @"\.bytes$", null);
            foreach (var s in u3dList)
            {
                string ab = GetAssetPath(s); //s.Replace(readPath, "").Replace("/", "").Replace("\\", "");
                assets.Add(ab);
            }

            EditorUtility.ClearProgressBar();
            CUtils.DebugCastTime("Time Generate FileList End");
            Debug.Log("all assetbundle count = " + assets.Count);
            BuildScript.GenerateAssetBundlesUpdateFile(assets.ToArray());
            CUtils.DebugCastTime("Time GenerateAssetBundlesUpdateFile End");
        }
예제 #6
0
    // Use this for initialization
    IEnumerator Start()
    {
        CUtils.DebugCastTime("LoadingFirst.Start");
        //load manifest
        ResourcesLoader.Initialize();
        CUtils.DebugCastTime("LoadingFirst.Initialize");
        LogSys();
        LoadFirstHelper.LoadFileManifest(sceneAssetBundleName, sceneName);
        yield return(null);

#if  UNITY_ANDROID //&& !UNITY_EDITOR
        if (ManifestManager.fileManifest == null)
        {
            //obb丢失
        }
#endif
        Hugula.Localization.language = PlayerPrefs.GetString("Language", Application.systemLanguage.ToString());
        yield return(new WaitForLanguageHasBeenSet());

        if (ManifestManager.CheckNeedUncompressStreamingAssets())
        {
            // todo
        }

        LoadFirstHelper.BeginLoadScene(enterLua);
    }
예제 #7
0
 static void OnSceneAbLoaded(CRequest req)
 {
     LResLoader.instance.OnSharedComplete -= OnSharedComplete;
             #if HUGULA_LOADER_DEBUG
     Debug.LogFormat("OnSceneAbLoaded {0} is done !", req.url);
             #endif
     CUtils.DebugCastTime("On " + sceneName + "Loaded");
 }
예제 #8
0
        public static void BuildAssetBundles()
        {
            CUtils.DebugCastTime("Time HandleUpdateMaterail End");

            CheckstreamingAssetsPath();
            CUtils.DebugCastTime("Time CheckstreamingAssetsPath End");
            BuildPipeline.BuildAssetBundles(GetOutPutPath(), optionsDefault, target);
            CUtils.DebugCastTime("Time BuildPipeline.BuildAssetBundles End");
        }
예제 #9
0
 void Start()
 {
     CUtils.DebugCastTime("Plua Start");
     lua.init(null, () =>
     {
         CUtils.DebugCastTime("Slua binded");
         DoMain();
     });
 }
예제 #10
0
        public static void GenerateAssetBundlesUpdateFile(string[] allBundles)
        {
            string title = "Generate Update File ";
            string info  = "Compute crc32";

            EditorUtility.DisplayProgressBar(title, info, 0.1f);
            Dictionary <string, object[]> firstCrcDict = new Dictionary <string, object[]>();
            HashSet <string> manualFileList            = new HashSet <string>();
            Dictionary <string, object[]> currCrcDict  = new Dictionary <string, object[]>();
            Dictionary <string, object[]> diffCrcDict  = new Dictionary <string, object[]>();

            #region 读取首包
            bool firstExists = SplitPackage.ReadFirst(firstCrcDict, manualFileList);
            #endregion

            SplitPackage.DeleteSplitPackageResFolder();

            #region 生成校验列表
            SplitPackage.UpdateOutPath = null;
            AssetDatabase.Refresh();
            StringBuilder[] sbs           = SplitPackage.CreateCrcListContent(allBundles, firstCrcDict, currCrcDict, diffCrcDict, manualFileList);
            uint            streaming_crc = SplitPackage.CreateStreamingCrcList(sbs[0]);                          //本地列表
            // System.Threading.Thread.Sleep(1000);
            uint diff_crc = SplitPackage.CreateStreamingCrcList(sbs[1], firstExists, SplitPackage.UpdateOutPath); //增量列表
            // System.Threading.Thread.Sleep(1000);
            CUtils.DebugCastTime("Time CreateStreamingCrcList End");
            #endregion

            #region 生成版本号
            //生成版本号码
            SplitPackage.CreateVersionAssetBundle(diff_crc);
            CUtils.DebugCastTime("Time CreateVersionAssetBundle End");
            #endregion

            #region copy更新文件导出

            SplitPackage.CopyVersionToSplitFolder(diff_crc);

            SplitPackage.CopyChangeFileToSplitFolder(firstExists, firstCrcDict, currCrcDict, diffCrcDict, manualFileList);

            CUtils.DebugCastTime("Time CopyChangeFileToSplitFolder End");

            Debug.LogFormat("streaming_crc={0},diff_crc{1}", streaming_crc, diff_crc);

            Debug.LogFormat(" firstCrcDict={0},currCrcDict={1},diffCrcDict={2},manualFileList={3}", firstCrcDict.Count, currCrcDict.Count, diffCrcDict.Count, manualFileList.Count);

            #endregion

            #region  除手动加载文件
#if (UNITY_ANDROID || UNITY_IOS) //&& !UNITY_EDITOR
            SplitPackage.DeleteStreamingFiles(manualFileList);
#endif
            #endregion

            EditorUtility.ClearProgressBar();
        }
예제 #11
0
        public static void BuildAssetBundles()
        {
            CUtils.DebugCastTime("Time HandleUpdateMaterail End");
            EditorUtils.CheckstreamingAssetsPath();
            CUtils.DebugCastTime("Time CheckstreamingAssetsPath End");
            var ab = BuildPipeline.BuildAssetBundles(EditorUtils.GetOutPutPath(), SplitPackage.DefaultBuildAssetBundleOptions, target);

            SplitPackage.CreateStreamingFileManifest(ab);
            CUtils.DebugCastTime("Time BuildPipeline.BuildAssetBundles End");
        }
예제 #12
0
    //	[MenuItem("Hugula/IOS Publish  ", false, 16)]
    static void BuildForIOS()
    {
        CUtils.DebugCastTime("Time BuildForIOS Begin");
        string path = "../../release/ios";

        path = Path.GetFullPath(path);
        ExportResources.DirectoryDelete(path);
        ExportResources.CheckDirectory(path);
        BuildPipeline.BuildPlayer(GetBuildScenes(), path, BuildTarget.iOS, BuildOptions.None);
        CUtils.DebugCastTime("Time BuildForIOS End");
    }
예제 #13
0
파일: PLua.cs 프로젝트: zhengfasheng/hugula
        /// <summary>
        /// Pre Init Lua.
        /// </summary>
        /// <param name="sconds">Sconds.</param>
        public void PreInitLua () {
#if !HUGULA_RELEASE
            Debug.LogFormat ("ManagedThreadId = {0},frame={1}", System.Threading.Thread.CurrentThread.ManagedThreadId, Time.frameCount);
#endif
            if (lua == null) lua = new Lua ();
            Debug.LogFormat ("PreInitLua {0}", lua);
            CUtils.DebugCastTime ("");
            lua.init (null, () => {
                CUtils.DebugCastTime ("Slua binded");
                isLuaInitFinished = true;
            }, LuaSvrFlag.LSF_3RDDLL);
        }
예제 #14
0
 public static void exportPublish()
 {
     exportLua();
     CUtils.DebugCastTime("Time exportLua End");
     exportLanguage();
     exportConfig();
     BuildScript.BuildAssetBundles(); //导出资源
     // CleanAssetbundle.Clean();        //清理多余的资源
     CUtils.DebugCastTime("Time BuildAssetBundles End");
     buildAssetBundlesUpdateAB();//更新列表和版本号码
     CUtils.DebugCastTime("Time buildAssetBundlesUpdateAB End");
 }
예제 #15
0
 /// <summary>
 /// Pre Init Lua.
 /// </summary>
 /// <param name="sconds">Sconds.</param>
 public static void PreInitLua()
 {
     if (lua == null)
     {
         lua = new Lua();
     }
     CUtils.DebugCastTime("");
     lua.init(null, () =>
     {
         CUtils.DebugCastTime("Slua binded");
         isLuaInitFinished = true;
     }, LuaSvrFlag.LSF_3RDDLL);
 }
예제 #16
0
    public static void LoadFileManifest()
    {
#if UNITY_EDITOR
        Debug.LogFormat("<color=green>SimulateAssetBundleInEditor {0} mode </color> <color=#8cacbc> change( menu AssetBundles/Simulation Mode)</color>", ManifestManager.SimulateAssetBundleInEditor ? "simulate" : "assetbundle");
        // if (ManifestManager.SimulateAssetBundleInEditor)
        // {
        //     return;
        // }
#endif
        ManifestManager.LoadFileManifest(null);
        ManifestManager.LoadUpdateFileManifest(null);
        CUtils.DebugCastTime("LoadingFirst.LoadFileManifest");
    }
예제 #17
0
    public static void BeginLoadScene()
    {
        CUtils.DebugCastTime("LoadingFirst");
        var req = LRequest.Get();

        req.relativeUrl = CUtils.GetRightFileName(sceneAssetBundleName);
        req.assetName   = sceneName;
        req.OnComplete  = OnSceneAbLoaded;
        req.OnEnd       = OnSceneAbError;
        req.assetType   = CacheManager.Typeof_ABScene;
        req.async       = true;
        LResLoader.instance.LoadReq(req);
    }
예제 #18
0
    //开始加载场景
    public static void BeginLoadScene()
    {
        ResourcesLoader.OnAssetBundleComplete = OnSharedComplete;
        CUtils.DebugCastTime("LoadingFirst.BeginLoadScene");
        var req = CRequest.Get();

        req.relativeUrl = CUtils.GetRightFileName(sceneAssetBundleName);
        req.assetName   = sceneName;
        req.OnComplete  = OnSceneAbLoaded;
        req.OnEnd       = OnSceneAbError;
        req.assetType   = CacheManager.Typeof_ABScene;
        CacheManager.Unload(req.keyHashCode);
        ResourcesLoader.LoadAsset(req);
    }
예제 #19
0
    internal static void LoadFileManifest(string sceneAbName, string scenename)
    {
        sceneAssetBundleName = sceneAbName;
        sceneName            = scenename;
#if UNITY_EDITOR
        Debug.LogFormat("<color=green>SimulateAssetBundleInEditor {0} mode </color> <color=#8cacbc> change( menu AssetBundles/Simulation Mode)</color>", ManifestManager.SimulateAssetBundleInEditor ? "simulate" : "assetbundle");
        // if (ManifestManager.SimulateAssetBundleInEditor)
        // {
        //     return;
        // }
#endif
        ManifestManager.LoadFileManifest(null);

        CUtils.DebugCastTime("LoadingFirst.LoadFileManifest");
    }
예제 #20
0
    //开始加载场景
    internal static void BeginLoadScene(string beginLua)
    {
        ManifestManager.LoadUpdateFileManifest(null);
        PLua.DestoryLua();
        PLua.enterLua = beginLua;
        CUtils.DebugCastTime("LoadingFirst");
        var req = CRequest.Get();

        req.relativeUrl = CUtils.GetRightFileName(sceneAssetBundleName);
        req.assetName   = sceneName;
        req.OnComplete  = OnSceneAbLoaded;
        req.OnEnd       = OnSceneAbError;
        req.assetType   = CacheManager.Typeof_ABScene;
        req.async       = true;
        ResourcesLoader.LoadAsset(req);
        ResourcesLoader.OnAssetBundleComplete = OnSharedComplete;
    }
예제 #21
0
    // [MenuItem("Hugula/Android publish ", false, 16)]
    static void BuildForAndroid()
    {
        string path = "hugula.apk";

        path = Path.GetFullPath(path);
        exportingAndroidProject = false;
        //copy android plugins
        AndroidSettings("mono");
        PlayerSettings.SetPropertyInt("ScriptingBackend", (int)ScriptingImplementation.Mono2x, BuildTargetGroup.Android);
        if (setting.ToLower().Contains("development"))
        {
            GenericBuild(GetBuildScenes(), path, BuildTarget.Android, BuildOptions.Development);
        }
        else
        {
            GenericBuild(GetBuildScenes(), path, BuildTarget.Android, BuildOptions.None);
        }
        CUtils.DebugCastTime("Time BuildForAndroid End");
    }
예제 #22
0
    // [MenuItem("Hugula/IOS Publish  ", false, 16)]
    static void BuildForIOS()
    {
        CUtils.DebugCastTime("Time BuildForIOS Begin");

        string path = "../Release/iOS";

        path = Path.GetFullPath(path);
        IOSSettings();
        EditorUtils.DirectoryDelete(path);
        EditorUtils.CheckDirectory(path);
        if (setting.ToLower().Contains("development"))
        {
            GenericBuild(GetBuildScenes(), path, BuildTarget.iOS, BuildOptions.Development);
        }
        else
        {
            GenericBuild(GetBuildScenes(), path, BuildTarget.iOS, BuildOptions.None);
        }
        CUtils.DebugCastTime("Time BuildForIOS End");
    }
예제 #23
0
    // [MenuItem("Hugula/Android Project publish ", false, 16)]
    static void BuildForAndroidProject()
    {
        string path = "../../release/android";

        path = Path.GetFullPath(path);
        exportingAndroidProject = true;
        AndroidSettings("mono");
        EditorUtils.DirectoryDelete(path);
        EditorUtils.CheckDirectory(path);
        if (setting.ToLower().Contains("development"))
        {
            GenericBuild(GetBuildScenes(), path, BuildTarget.Android, BuildOptions.Development | BuildOptions.AcceptExternalModificationsToPlayer);
        }
        else
        {
            GenericBuild(GetBuildScenes(), path, BuildTarget.Android, BuildOptions.AcceptExternalModificationsToPlayer);
        }

        CUtils.DebugCastTime("Time BuildForAndroidProject End");
    }
예제 #24
0
    // Use this for initialization
    IEnumerator Start()
    {
        CUtils.DebugCastTime("LoadingFirst.Start");
        //load manifest
        ResourcesLoader.Initialize();
        CUtils.DebugCastTime("LoadingFirst.Initialize");
        LogSys();
        LoadFirstHelper.LoadFileManifest();
        yield return(new WaitForSeconds(0.16f));

        Hugula.Localization.language = PlayerPrefs.GetString("Language", Application.systemLanguage.ToString());
        yield return(new WaitForLanguageHasBeenSet());

        LoadFirstHelper.SetScene(sceneAssetBundleName, sceneName);
        if (ManifestManager.CheckNeedUncompressStreamingAssets())
        {
            // todo
        }

        LoadFirstHelper.BeginLoadScene();
    }
예제 #25
0
    // [MenuItem("Hugula/Android iL2CPP publish ", false, 16)]
    static void BuildForAndroidIL2CPP()
    {
        string path = "hugula.apk";

        path = Path.GetFullPath(path);
        exportingAndroidProject = false;
        //copy android plugins
        AndroidSettings();
#if UNITY_5_6_OR_NEWER
        PlayerSettings.SetScriptingBackend(BuildTargetGroup.Android, ScriptingImplementation.IL2CPP);
#else
        PlayerSettings.SetPropertyInt("ScriptingBackend", (int)ScriptingImplementation.IL2CPP, BuildTargetGroup.Android);
#endif
        if (setting.ToLower().Contains("development"))
        {
            GenericBuild(GetBuildScenes(), path, BuildTarget.Android, BuildOptions.Development);
        }
        else
        {
            GenericBuild(GetBuildScenes(), path, BuildTarget.Android, BuildOptions.None);
        }
        CUtils.DebugCastTime("Time BuildForAndroid iL2CPP End");
    }
예제 #26
0
 // Use this for initialization
 void Start()
 {
     //load manifest
     CUtils.DebugCastTime("LoadingFirst");
     LoadFirstHelper.LoadManifest(sceneAssetBundleName, sceneName);
 }
예제 #27
0
파일: PLua.cs 프로젝트: zhengfasheng/hugula
 /// <summary>
 /// lua begin
 /// </summary>
 private void DoMain()
 {
     CUtils.DebugCastTime("");
     lua.luaState.doString(this.luaMain);
 }
예제 #28
0
 static void OnSceneAbLoaded(CRequest req)
 {
     LResLoader.instance.OnSharedComplete -= OnSharedComplete;
     CUtils.DebugCastTime("On " + sceneName + "Loaded");
 }