Exemplo n.º 1
0
    static String GetResBaseFullPath()
    {
#if UNITY_ANDROID  //android 需拷贝到另一目录
        return("assets://" + GetResBaseRelativePath());
#elif UNITY_IPHONE // iOS平台直接用StreamingAsset中的目录
        return(Application.dataPath + "/Raw/res_base");
#else              //其他平台直接用 StreamingAsset 中的目录
        return(CStreamingAssetHelper.MakePath(GetResBaseRelativePath()));
#endif
    }
Exemplo n.º 2
0
    public IEnumerable RunInstallStage(string srcDir, string destDir)
    {
        EntryPoint.Instance.PanelHotUpdate.SetActive(true);

        //新UI
        _HotUpdateViewer.SetInstallInfo(EntryPoint.Instance.UpdateStringConfigParams.UpdateString_PrepareForFirstTimeUse);
        _HotUpdateViewer.SetInstallPercent(-1.0f);

        _HotUpdateViewer.SetAllProgress(0.0f);
        _HotUpdateViewer.SetPartProgress(0.0f);
        _HotUpdateViewer.SetDesc(EntryPoint.Instance.UpdateStringConfigParams.UpdateString_PrepareForFirstTimeUse);
        _HotUpdateViewer.SetCurrentVersion("0.0.0");
        _HotUpdateViewer.SetServerVersion("0.0.0");

        yield return(null);

        yield return(null);

        long lDiskSize  = OSUtility.GetFreeDiskSpace();
        long lTotalSize = (long)Math.Ceiling(EntryPoint.Instance.TotalSizeToCopy * 1.1f);

        if (lDiskSize != 0 && lDiskSize < lTotalSize)         //没有足够的空间,退出
        {
            string sizeStr     = string.Empty;
            long   iNeedSizeMB = lTotalSize / (1024 * 1024);
            if (iNeedSizeMB >= 1f)
            {
                iNeedSizeMB = ((iNeedSizeMB * 10) - (iNeedSizeMB * 10) % 1) / 10; //保留一位小数
                if (iNeedSizeMB % 1 > 0)
                {
                    //有小数点
                    sizeStr = HobaText.Format("{0:0.0} MB", iNeedSizeMB);
                }
                else
                {
                    sizeStr = HobaText.Format("{0:0} MB", iNeedSizeMB);
                }
            }
            else
            {
                long iNeedSizeKB = lTotalSize / 1024;
                sizeStr = HobaText.Format("{0:0} KB", iNeedSizeKB);
            }

            _HotUpdateViewer.SetCircle(false);
            yield return(new WaitForUserClick(MessageBoxStyle.MB_OK,
                                              EntryPoint.Instance.UpdateStringConfigParams.UpdateString_EnsureEnoughSpaceMB,
                                              EntryPoint.Instance.UpdateStringConfigParams.UpdateState_DiskSpaceFullErr,
                                              string.Empty,
                                              sizeStr));

            EntryPoint.ExitGame();
            yield break;
        }

        lTotalSize = EntryPoint.Instance.TotalSizeToCopy;
        bool  succeed       = false;
        float fLastProgress = 0.0f;
        var   listFile      = EntryPoint.Instance.ListFilesToCopy;

        if (lTotalSize > 0 && listFile != null)
        {
            long sizeFinished = 0;
            for (int i = 0; i < listFile.Count; ++i)
            {
                long size = CStreamingAssetHelper.CopyAssetFileToPath(listFile[i], srcDir, destDir);
                if (size == -1)
                {
                    DeviceLogger.Instance.WriteLog(string.Format("RunInstallStage CopyAssetFileToPath Failed! {0}", listFile[i]));
                    continue;
                }

                sizeFinished += size;

                float progress = (float)sizeFinished / lTotalSize;

                if (Util.IsZero(fLastProgress - progress))
                {
                    fLastProgress = progress;
                    _HotUpdateViewer.SetAllProgress(progress);
                    _HotUpdateViewer.SetPartProgress(progress);
                    _HotUpdateViewer.SetInstallPercent(progress);

                    yield return(null);

                    yield return(null);
                }
            }
            succeed = (sizeFinished == lTotalSize);
        }
        else
        {
            succeed = true;
        }

        EntryPoint.Instance.IsInstallFinished = succeed;
        yield return(new WaitForSeconds(0.5f));
    }