Unity3D工程阅读方法,直捣黄龙篇

  1. Unity3D项目初识
  2. 代码阅读前准备
  3. 进入代码阅读阶段
  4. 代码进阶阅读
  5. 代码阅读后总结
  6. 下次遇到U3D工程不能再说没有好办法快速入门了哦!

Unity3D项目初识

    1. 当开发初次识别一个U3D项目时,首先要将工具给准备好.
    1. U3D,Rider,VSCode,VS,这三个编辑器都需要,最好是在Windows上面进行开发.
    1. 需要先将U3D的Project面板中的Assets文件夹的目录记下来,每个文件夹代表的含义需要有一个明确的认知.对资源,对代码存放位置需要牢记

代码阅读前准备

    1. 对U3D目录中的结构认知完毕之后,直接将代码生成类图,UML图,此时最好用的工具莫过于VS中的类图,关于类图如何在VS中安装,请自行百度.此类图只能确保继承关系如何,无法确认类的复杂逻辑,例如Update中的复杂循环逻辑,反射创建类是无法被识别的.但是对认知代码整体帮助是非常巨大的.
    1. 对整体认知之后,需要使用金字塔模型来整合各部分的关系以及编写UML图或者使用blog,多重复合结构来分析解构项目代码.

进入代码阅读阶段

    1. 开始进入代码阅读阶段.将代码的工程结构与U3D的资源工程结构分割开来.熟悉代码的第三方库,Lua,开发编写的C#脚本,某个人为了某个功能所分化出的某块功能.
    1. 以某个场景为入口,这个场景中肯定有一个作为Main函数启动的开始点.开始进入主逻辑的阅读.
    1. 开始识别C#脚本与Lua脚本.第一步要做的,就是熟悉类名,将某一功能的代码分组,比如,代码命名部分一致,有前缀后缀,将其分成一组,给这一组打上功能标签.
    1. 拆分四种类型的C#抽象类型代码.第一种代码纯粹作为数据保存在代码中的,必然有,可以将其压入最后阅读范围.第二种类型的代码是纯算法代码,框架结构等,例如池子,LRU,堆栈,Manager,代理器,集合器等等,第三种是View,也就是U3D中的GameObject,log,profiler,信息验证记录等,此种类型的代码是表现相关,且与主要逻辑息息相关,也就是耦合程度较高.第四种类型的代码即是主体逻辑代码,也可以称作为业务代码,此种代码是必须熟知的,可以将此种类型的代码看作一个轮回主体,必然有衔接之处,需要以重要节点为支撑进行阅读.
    1. 以上代码分析主要是让开发产生一个以节点成型的环形节点金字塔结构.

代码进阶阅读

    1. 去除杂项无关信息,关心主要结构设计以及细节实现.
    1. 一定要在脑海中形成节点金字塔结构.这是所有工程代码所必须的.也就是中国上下五千年的行政结构,并且以轮回形式看待.
    1. 看待代码的最重要基础思想:创建,销毁,增加,删除,修改(更新),查找.也可以看成是佛家的六字真言(创销增删改查),六道轮回.将其融入到看整体架构设计,每一个类,每一个变量,都要将其算入此六道轮回中,算出其在六道轮回中属于哪个类型.
    1. 每一个类都有一个主角,每个类的编写无非是对这个主角的增删改查,如果此类没有主角,可以设定一个伪主角,类如工具类,数据类,这种类有一个伪概念,就是我要关注这个主角干什么,它是体现了什么功能,一般情况下,类的名字是可以看成主角,但是这个类中必定有对某个东西,可以是数组,变量,方法进行”创销增删改查”的体现,(一般是体现不全的,这个情况完全可以说它逻辑不自洽,哈哈哈).
    1. 断点阅读,以上概念如果形成了,可以尝试断点阅读,在主体逻辑的入口处打上断点,配合U3D的点击,一步一步进入逻辑内部,当然了,必须要电脑好!!!此时,你会有种深入浅出的感觉,九浅一深,看到某个代码像主体逻辑,直接打断点,一步一步向下走进去.
    1. 遇到实在不能理解的,必定是背景知识不够充足,需要去百度先将概念理解透彻,再回头进入查看.
    1. 查看主要逻辑的一次时间,约在1-2个小时之间,不可过久,过久精力不足,不可过短,过短流于表面.持续性间歇性阅读代码,一般情况下,如果知识量充足,也就一个月可以阅读完毕,如果知识量不足,就需要看个人天赋了.
    1. 工程入口,一般情况有Main函数(类似U3D的场景或者初始化,管理脚本等),第二个入口就是UI,第三个入口是Input,第四个入口是Manager,第五个入口是Base,第六个入口是xxFramework,第七个入口是xxKit(Tool),第八个入口是数据(可以是data,load等等),类似的入口有很多,在这个地方,可以直接打断点.
    1. 当我们找不到主体逻辑该怎么办?如果你思考了到了这一步,就有了进一步的可能性,那就是去找主体循环(Update),如果打断点,走完都没发现如何运作的,那就肯定是在某个地方对某个变量或者方法改变了,另外有一个或多个循环对你改变的东西进行了”创销增删改查”,这就是六道轮回.
    1. 该如何应对此种情况?打断点在此的作用微乎其微?思考一下为什么?
    1. 打断点,肯定会卡很久,因为跑的太快,界面又渲染不到位,很难理解代表的什么含义.那么如何做呢?打log,自己设计一套打log方案,或者单独打log对其进行理解.如果实在找不到主体逻辑与主体循环,还记得前面让你进行的分组吗?肯定可以对主体循环进行分组的,那就将所有主体循环你觉得应该分在此组的全部打上log,然后看界面表现,并思考逻辑.中间的联系,无非是多个变量,多个方法的”创销增删改查”,在另外一个主体循环中的”创销增删改查”.
    1. 对于游戏主体的分支情况,如果一个分支在主体逻辑分支之外,不需要太过关注,并且不能将其硬衔接在主体环形逻辑的路线上.此种做法非常没有道理,完全违背了顺序思考法则,也是为了给开发降低思考难度,而不应该这么去设计以及编写代码.
    1. 要注重背景知识的积累,此法是最重基础,最没有后遗症,是童子功,需要日积月累,包括不限于阅读U3D工程,算法与数据结构,计算机组成原理,网络,操作系统等等,游戏中又需要某些设计模式,AI作为知识储备,其实在我看来就是属于算法与数据结构的分支.

代码阅读后总结

    1. 每个工程都能衍生出非常巨大的文字量,而总结就是取其精华.
    1. 以模块进行拆分并编写文档,blog,思维导图,UML图等等,一定要将主体逻辑,文件结构功能,网络流程,主循环逻辑,框架结构等等总结完成,此时才算的上真正的对项目工程有了细致的了解.
    1. 将其总结广而告之,让其他人补充或者指出错误,此时要心平气和,不能和杠精纠缠.
    1. 复写,复习或者修改一到三遍.

下次遇到U3D工程不能再说没有好办法快速入门了哦!


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 1487842110@qq.com

Love

Title:Unity3D工程阅读方法,直捣黄龙篇

文章字数:2.1k

Author:诸子百家-谁的天下?

Created At:2020-05-11, 11:41:32

Updated At:2021-10-02, 01:31:21

Url:http://yoursite.com/2020/05/11/Unity/Utils/Unity3D%E5%B7%A5%E7%A8%8B%E9%98%85%E8%AF%BB%E6%96%B9%E6%B3%95/

Copyright: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录
×

爱你,爱世人