2021-08-11 独立游戏开发日志-开发环境、项目初始化,等等。

开发环境:

        Unity引擎:Unity 2019.4.29f1c1

        开发工具集:Visual Studio 2019

                插件:Visual AssistX

        版本控制:

                Gitee

                TortoiseGit

                SourceTree


创建Gitee库。

使用SourceTree关联本地路径。

在本地关联路径下创建Unity工程。

自定义Unity编辑器下的开发页面布局。

创建代码的目录层级:

        C#框架(Framework_c)

        Unity框架(Framework_u)

                Editor

                Runtime

        Unity框架补充(Framework_u_s)

        主逻辑(MainLogic)

        主逻辑补充(MainLogic_s)


创建一个封装方法的委托,该委托封装的方法无返回值。

使用方法如下图代码段:

// 创建一个委托类型,该委托类型封装了具有一个参数、无返回值的方法。
public delegate void FrameworkAction<in T>(T obj);

// 声明委托类型的实例。
public FrameworkAction<DownloadAgent> DownloadAgentStart;

// 一个要装载到委托实例中的方法。
private void OnDownloadAgentStart(DownloadAgent sender)
{
    if (m_DownloadStartEventHandler != null)
    {
        DownloadStartEventArgs downloadStartEventArgs =                        DownloadStartEventArgs.Create(sender.Task.SerialId, sender.Task.DownloadPath,                sender.Task.DownloadUri, sender.CurrentLength, sender.Task.UserData);
        m_DownloadStartEventHandler(this, downloadStartEventArgs);
        ReferencePool.Release(downloadStartEventArgs);
    }
}

// 委托实例中装载方法。
agent.DownloadAgentStart += OnDownloadAgentStart;

// 执行这个委托装载的方法。
public StartTaskStatus Start(DownloadTask task)
{
    ...
    if (DownloadAgentStart != null)
    {
        DownloadAgentStart(this);
    }
    ...
}


创建一个封装方法的委托,该委托封装的方法有返回值。

使用方法如下图代码段。

// 创建一个封装方法的委托,该委托有两个参数,有TResult类型返回值。
public delegate TResult GameFrameworkFunc<in T1, in T2, out TResult>(T1 arg1, T2 arg2);

// 声明委托的实例。
public event GameFrameworkFunc<string, float, bool> ProcessingAssetBundle = null;

// 该委托将加载的方法。
private bool OnProcessingAssetBundle(string assetBundleName, float progress)
{
        if (EditorUtility.DisplayCancelableProgressBar("Processing AssetBundle", Utility.Text.Format("Processing '{0}'...", assetBundleName), progress))
        {
            EditorUtility.ClearProgressBar();
            return true;
        }
    else
    {
        Repaint();
        return false;
    }
}

// 委托实例中加载方法。
m_Controller.ProcessingAssetBundle += OnProcessingAssetBundle;

// 执行这个委托装载的方法。
...
if (ProcessingAssetBundle != null)
{
    if (ProcessingAssetBundle(fullName, (float)(i + 1) / assetBundleResourceDatas.Length))
    {
            ...
    }
}
...

添加一个Utility.Text。

        用于获取格式化后的拼接字符串。

添加一个Utility.Assembly类。

        用于获取程序集中指定类名的类。


自定义一个FrameworkException类,该类重写Exception类。

        自定义异常类区别于System的标准异常类,主要是为了标记业务逻辑中的非正常事件流,避免与System中的标准异常混淆。


增加一个FrameworkComponent类。

        框架组件的抽象基类,所有应用中用到的组件应该继承于该类。

增加一个FrameworkEntry类。

        这是一个静态类,是框架的入口类,所有组件应该调用该类中的注册组件方法,将自身缓存到一个LinkedList<FrameworkComponent>的组件列表中。

FrameworkComponent类在Awake方法中调用框架入口类中的注册组件方法,注册自身。

增加一个BaseComponent组件。

        应用在UnityEngine.dll引用下的一些底层的初始化和设置工作。


实现日志模块逻辑。

        FrameworkLogLevel:日志等级枚举,包含debug,info,warning,error,fatal五个级别。

        ILogHelper:日志辅助器接口。

        FrameworkLog:框架日志类。

        DefaultLogHelper:默认日志辅助器。具体实现打印日记逻辑的类。

        U框架下的基础组件中初始化日志辅助器。

        增加U框架下Tool目录下的Log类,用于具体调用日志辅助器打印日志。

        增加脚本宏定义类,规范模式。

        增加开关日志的脚本宏定义类,用于开关各个等级的日志打印逻辑。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值