开发环境:
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类,用于具体调用日志辅助器打印日志。
增加脚本宏定义类,规范模式。
增加开关日志的脚本宏定义类,用于开关各个等级的日志打印逻辑。