相关文章推荐
有情有义的蚂蚁  ·  60 个神级 VS Code ...·  1 年前    · 
慈祥的消炎药  ·  c# - Can I add a ...·  1 年前    · 
发呆的洋葱  ·  Elasticsearch Service ...·  1 年前    · 
安静的火柴  ·  QT QTableView ...·  1 年前    · 

👉关于作者

众所周知,人生是一个漫长的流程,不断克服困难,不断反思前进的过程。在这个过程中会产生很多对于人生的质疑和思考,于是我决定将自己的思考,经验和故事全部分享出来,以此寻找共鸣!!!

专注于Android/Unity和各种游戏开发技巧,以及各种资源分享(网站、工具、素材、源码、游戏等)

欢迎关注公众号【 空名先生 】获取更多资源和交流!

这段时间学习个Unity框架并且准备应用到实际项目中,但是因为作者神龙见首不见尾,没有什么比较详细的文档,学习困难,不过好在作者将框架所有内容开源了,再次记录下学习过程。

👉实践过程

😜如何使用?

工程目录及作用如下:

  • Libraries 存放 GameFramework.dll 核心框架和一些框架必需的第三方库(当前只有一个开源 zip 压缩算法库)
  • Prefabs 存放 GameFramework.prefab 预制体,用于快速创建一个游戏框架启动场景
  • Scripts 存放 UnityGameFramework 的全部 Runtime 和 Editor 代码
  • Example.unity 是一个含有 GameFramework.prefab 预制体的空场景,作为游戏启动的场景
  • ProcedureExample.cs 是一个示例流程代码文件,示例将以这个流程作为启动流程。
  • 运行项目后发现Game场景有个浮动小窗口,这是框架提供的调试器窗口

  • Console 选项卡在运行时(当然可以在移动设备上)默认按不同日志类型,以不同的日志颜色回显最近的日志。点击某条日志可以查看详细的日志和堆栈详请
  • Information 选项卡显示设备硬件信息、游戏版本和资源信息,输入信息,传感器等
  • Profiler 选项卡显示性能调试相关的信息,内存,对象池,网络等信息
  • Other 选项卡可以用来配置调试框窗口的大小缩放(一般不用修改)、执行内存回收操作或者执行重启游戏操作等
  • 作者英语不是很好,为了用起来快捷将里面部分英文翻译成了中文,看起来确实顺延多了,哈哈

    😜日志管理工具

    在任何编程语言中,日志都是重中之重,是逻辑分析的首要工具,所以我们首要任务就是要学会使用框架的日志工具。

    首先是基础的Log日志(如图),和系统的一样输出到Unity编辑器的控制台

    发布的产品,最好关闭所有日志或者仅开启错误及以上级别日志,自己开发调试的时候可以自定义开启日志级别。

    除了在控制台打印,我们使用框架更多的可能是将日志保存到文件的功能。

    自定义一个类继承DefaultLogHelper

    using GameFramework;
    using System;
    using System.Collections;
    using System.Collections.Generic;
    using System.IO;
    using System.Text;
    using UnityEngine;
    using UnityGameFramework.Runtime;
    internal class FileLogHelper : DefaultLogHelper
    //设置日志文件保存路径-你可以自定义,也可以使用系统的
    private readonly string CurrentLogPath = Utility.Path.GetRegularPath(Path.Combine(Application.persistentDataPath, "current.log"));
    private readonly string PreviousLogPath = Utility.Path.GetRegularPath(Path.Combine(Application.persistentDataPath, "previous.log"));
    public FileLogHelper()
        Application.logMessageReceived += OnLogMessageReceived;
            //每次运行的时候将日志替换,就像队列一样
            if (File.Exists(PreviousLogPath))
                File.Delete(PreviousLogPath);
            if (File.Exists(CurrentLogPath))
                File.Move(CurrentLogPath, PreviousLogPath);
        catch
        private void OnLogMessageReceived(string logMessage, string stackTrace, LogType logType)
            string log = Utility.Text.Format("[{0}][{1}] {2}{4}{3}{4}", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"), logType.ToString(), logMessage ?? "<Empty Message>", stackTrace ?? "<Empty StackTrace>", Environment.NewLine);
                File.AppendAllText(CurrentLogPath, log, Encoding.UTF8);
            catch
    

    然后在挂在了Base脚本的物体中选择使用即可,就这么简单!!!

    运行的时候,也可以在调试器窗口中找到各个路径位置。

    📢作者:小空和小芝中的小空

    📢转载说明-务必注明来源:芝麻粒儿 的个人主页 - 专栏 - 掘金 (juejin.cn)

    📢欢迎点赞👍收藏🌟留言📝

    分类:
    前端