MonoBehaviourSimplify 中的消息策略完善 在上一篇,笔者说,MonoBehaviourSimplify 中的消息策略还有一些小问题.我们在这篇试着解决一下. 先贴出来代码: using System; using System.Collections.Generic; namespace QFramework { public abstract partial class MonoBehaviourSimplify { Dictionary<string, Action<o…
在前两篇,我们把所有的示例重头到尾整理了一遍. 当前的状态如下: 要做的事情: (完成) 备份:导出文件,并取一个合理的名字. 遗留问题: (完成) 第八个示例与之前的示例代码重复,功能重复. (完成) 方法所在类的命名有问题. 菜单栏显示顺序问题. 弃用的代码警告 约定和规则: 每个示例在 QFramework 目录下创建一个文件夹,文件夹的格式是: 数字.示例的功能 每个示例写一个脚本,脚本中包含可复用的静态方法和 MenuItem 方法. 每写一个示例进行一次导出,导出的文件名后边加上日期…
整理前的准备 到目前为止,我们积攒了很多示例了,并且每个示例也都贯彻了最的约定和规则. 在上一篇的小结也说了一个比较新的东西:编程体验优化. 在之前我们还积攒了一个问题:代码重复问题. 我们可是忍住整理的冲动忍了好久了. 所以现在也是时候准备着手整理了. 知识点和问题总结 遗留问题 我们写列出来之前记录的第一个问题: 第八个示例与之前的示例代码重复,功能重复. 这个问题想想就很好解决,只要删除掉第八个示例之前的示例就好了.但是怎么删和删完是否会破坏原来的功能?这两问题要具体看了代码才会知道.现在…
第九个示例 目前代码如下: using UnityEngine; #if UNITY_EDITOR using UnityEditor; #endif namespace QFramework { public class ResolutionCheck { #if UNITY_EDITOR [MenuItem("QFramework/9.屏幕宽高比判断")] #endif private static void MenuClicked() { Debug.Log(IsPadResol…
第一章小结 为了强化教程的重点,会在合适的时候进行总结与快速复习. 第二章 简介 在第一章我们做了知识库的准备,从而让我们更高效地收集示例. 在第二章,我们就用准备好的导出工具试着收集几个示例,这些示例中有的是我们后续库的基础工具,也有的是在项目中非常实用的小工具,还有一些示例是实践了在框架搭建方向上非常重要的 C# 语法知识. 第二章大纲如下. 第八个示例(一) 在之前,我们完成了一个导出的功能.但是在完成这个功能的过程中,我们也遇到了一些问题.我们回忆一下,在<MenuItem 复用>的这…
在笔者刚做项目的时候,遇到了一个需求.第一个项目是一个跑酷游戏,而跑酷游戏是需要一条一条跑道拼接成的.每个跑道的长度是固定的,而怪物的出现位置也是在跑道上固定好的.那么怪物出现的概率决定一部分关卡的难度. 以上有点绕,其实就是,到某一个时刻,怪物是否要出现.而是否要出现是根据概率来决定的.如果一个怪物出现的概率是 100%,那么每次到达跑道固定的位置时候都要生成怪物.如果是 80% 那么就有百分之二十的几率不生成怪物. 那么如何去写这个逻辑呢? 我们先分析一下,我们要输入的是一个概率,而得出的结…
在上一篇,我们把菜单的顺序从头到尾整理了一遍.在整理菜单顺序的过程中,记录了一个要做的事情. 要做的事情: (完成) 备份:导出文件,并取一个合理的名字. 整理完菜单顺序后,学习新的知识,解决随着示例增多,可能出现类需要合并的问题. 我们要学习新的知识,试着解决类的合并问题.首先我们来看下要合并的类是什么,在我们的示例中是 TransformSimplify,这个 TransformSimplify 是对 Transform API 的简化,而 Transform 有非常多的 API,那么以后肯…
第四章 简介 方法的结构重复问题 我们在上一篇正式整理完毕,从这一篇开始,我们要再次进入学习收集示例阶段了. 那么我们学什么呢?当然是学习设计工具,也就是在上篇中提到的关键知识点.这些关键知识点,大部分来自于 C# 语法. 不过在此之前,我们先实现一个功能,这个功能是,传入几个数字,随机取出其中一个数字. 比如传入 1,3,5,7 从这四个数字中随机取出一个数字出来. 其实现很简单 代码如下: using UnityEngine; namespace QFramework { public pa…
在上一篇,我们接触了单例,使用单例解决了我们脚本之间访问的问题. 脚本之间访问其实有更好的方式. 我们先分下脚本访问脚本的几种形式. 第一种,A GameObject 是 B GameObject 的 Parent,或者是中间隔着几个层级的 Parent. 那这种情况下,如果 A 脚本想调用 B 脚本的方法,直接通过 transform.Find("XXX/YYY/ZZZ").GetComponent<B>().DoSomething() 就可以了. 但是如果是 B 脚本想…
在上一篇,我们对框架和架构进行了一点探讨.我们在这一篇再接着探讨. 什么是库呢? 来自同一位大神的解释: 库, 插到 既有 架构 中, 补充 特定 功能. 很形象,库就是搞这个的.我们的库最初存在的目的,就是收集知识,而收集知识是一般的架构(项目)中是没有的,那么我们为了补充特定功能(收集知识),就要把我们的库导进来,然后收集一两个示例,再导出去,然后删除掉项目中库的文件,消除痕迹以免被其他人发现:) ,而这个库补充的收集知识这个功能是对于大家有用的,而不是对项目有用的,虽然对大家有用到最后也会…