GameFramework框架——辅助工具

在生成新的AB包后,辅助生成version.txt工具,代码很简单 找出最新的AB包版本的BuildReport文件读取最新的length,hashcode,zip_length, zip hash code设置到桌面上的version.txt。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
using StarForce;
using UnityGameFramework.Editor.ResourceTools;
using System.IO;

//------------------------------------------------------------
// Game Framework
// Copyright © 2013-2020 Jiang Yin. All rights reserved.
// Homepage: https://gameframework.cn/
// Feedback: mailto:ellan@gameframework.cn
//------------------------------------------------------------

[System.Serializable]
public class GameVersionInfo
{
    // 是否需要强制更新游戏应用
    public bool ForceUpdateGame;

    // 最新的游戏版本号
    public string LatestGameVersion;

    // 最新的游戏内部版本号
    public int InternalGameVersion;

    // 最新的资源内部版本号
    public int InternalResourceVersion;

    // 资源更新下载地址
    public string UpdatePrefixUri;

    // 资源版本列表长度
    public int VersionListLength;

    // 资源版本列表哈希值
    public int VersionListHashCode;

    // 资源版本列表压缩后长度
    public int VersionListZipLength;

    // 资源版本列表压缩后哈希值
    public int VersionListZipHashCode;
}


public static class HotfixHelperEditor
{
    static string BuildReportPath = @"E:\UnityIndieGame\GameDemo\AssetBundle\BuildReport\";
    [MenuItem("Tools/UpdateVersionConfig")]
    static void UpdateVersionConfig()
    {
        string[] allDirectories = Directory.GetDirectories(BuildReportPath);
        int maxNum = -1;
        string maxPath = "";
        foreach (var v in allDirectories)
        {
            string[] arr = v.Split('_');
            int num = int.Parse(arr[arr.Length - 1]);
            if (num > maxNum)
            {
                maxNum = num;
                maxPath = v;
            }
        }
        if (!string.IsNullOrEmpty(maxPath))
        {
            //Debug.LogError("maxPath:" + maxPath);
            string path = @"C:\Users\lenovo\Desktop\version.txt";
            //Debug.LogError(path);

            string versionStr = File.ReadAllText(path);

            //Debug.Log(versionStr);
            string[] buildLogLines = File.ReadAllLines(maxPath + "/BuildLog.txt");
            int length, zip_length, hash_code, zip_hash_code;
            length = 0;
            zip_length = 0;
            hash_code = 0;
            zip_hash_code = 0;
            foreach (var v in buildLogLines)
            {
                if (v.IndexOf("length is '") != -1)
                {
                    string temp1 = v.Substring(v.IndexOf("length is '"));
                    length = int.Parse(temp1.Split('\'')[1]);
                }

                if (v.IndexOf("zip length is '") != -1)
                {
                    string temp1 = v.Substring(v.IndexOf("zip length is '"));
                    zip_length = int.Parse(temp1.Split('\'')[1]);
                }

                if (v.IndexOf("hash code is '") != -1)
                {
                    string temp1 = v.Substring(v.IndexOf("hash code is '"));
                    temp1 = temp1.Split('\'')[1];
                    hash_code = int.Parse(temp1.Split('[')[0]);
                }

                if (v.IndexOf("zip hash code is '") != -1)
                {
                    string temp1 = v.Substring(v.IndexOf("zip hash code is '"));
                    temp1 = temp1.Split('\'')[1];
                    zip_hash_code = int.Parse(temp1.Split('[')[0]);
                }
            }
            //Debug.LogError("maxNum:" + maxNum);
            //Debug.LogError("length:" + length);
            //Debug.LogError("hash_code:" + hash_code);
            //Debug.LogError("zip_length:" + zip_length);
            //Debug.LogError("zip_hash_code:" + zip_hash_code);

            GameVersionInfo versionConfig = JsonUtility.FromJson<GameVersionInfo>(versionStr);

            versionConfig.InternalResourceVersion = maxNum;
            versionConfig.VersionListLength = length;
            versionConfig.VersionListHashCode = hash_code;
            versionConfig.VersionListZipLength = zip_length;
            versionConfig.VersionListZipHashCode = zip_hash_code;

            File.WriteAllText(path, JsonUtility.ToJson(versionConfig, true));
            AssetDatabase.SaveAssets();
            AssetDatabase.Refresh();
        }
        else
        {
            Debug.LogError("完全没有任何文件");
        }

    }
}

 

GameFramework是一个用于游戏开发的框架。它提供了一个完整的游戏开发流程,包括游戏设计、编程、资源管理、场景管理、消息处理、资源加载、网络通信等方面的功能和模块。 首先,GameFramework提供了游戏设计方面的支持。它定义了游戏的基本组成部分,如场景、角色、道具等,并提供了相应的类和接口来方便开发者进行游戏设计。 其次,GameFramework具备强大的编程支持。它包括了一系列的工具和类库,用于处理游戏逻辑,实现游戏的功能和特性。开发者可以通过编程来实现游戏中的动画效果、碰撞检测、物理模拟等。 GameFramework还提供了资源管理和加载的功能。开发者可以通过它来管理游戏中的资源文件,包括图片、音频、视频等,同时它也提供了快速的资源加载方式,提高游戏的性能和用户体验。 此外,GameFramework还包含了场景管理和消息处理的功能。它可以管理游戏中的不同场景,方便游戏的切换和管理。同时,它还能处理游戏中的消息通信,让不同的游戏对象之间进行交互和通信。 最后,GameFramework还具备网络通信的能力。开发者可以使用它来实现网络游戏中的客户端和服务器的通信,包括数据传输、消息处理等。 总的来说,GameFramework是一个功能完备的游戏开发框架,它为开发者提供了全面的游戏开发支持,使得游戏开发变得更加高效和简单。无论是个人独立开发者还是大型游戏公司,都可以利用GameFramework来开发出优秀的游戏作品。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值