7 凉鞋的笔记

尚未进行身份认证

我要认证

QFramework作者,多年Unity开发者,siki学院讲师。

等级
TA的排名 3w+

Shader专题:卡通着色(一)控制颜色的艺术

什么是 Shader?关于什么是 Shader ,各种百科各种教程都有说过,但是今天我们就从一个另一个角度去试着理解什么是 Shader?我们先看下 Shade 的英文意思,如下:v.给…遮挡(光线);把…涂暗其中 把…涂暗 更贴近我们想要的意思。所以:Shader 这个单词从字面上理解,就是把什么东西涂暗。再强调一次:Shader 从单词字面上理解,就是把什么东西涂暗。再强调一次:把什么东西涂暗的就是 Shader,就是着色器。Shader 把什么涂暗了?当然是游戏世界的各个物体,总所周

2020-06-29 10:34:42

小班同学学习经历分享(一)游戏程序员成长札记

作者信息昵称:目及远方课程设计 HumanFramework:https://github.com/cyclons/HumanFramewo正文大四毕业,心血来潮,闲余之际,撰文留念。萌芽游戏程序员,把这个分成两块的话就是,游戏,程序。这两个中,只有一个,游戏,在我很小的时候就开始接触,在那个视电子游戏如电子海洛因,父母抵制到要送孩子去网瘾治疗所的年代,三年级的我就已经在玩ps2了,周围的同学还在玩红警qq大乱斗冒险岛飞车的时候,我已经玩高达战神龙珠古墓丽影,最终导致和周围同学没有共同话题。

2020-06-25 10:05:00

Unity 游戏框架搭建 2019 (五十六) 需求分析-架构中最重要的一环

需求分析-架构中最重要的一环我们的项目开始立项的时候,最常见的一个情况就是:几个人的小团队,一开始什么也不做,就开始写代码,验证逻辑,游戏就开始写起来了。而公司的一些所谓的领导层面一开始就把游戏定义为我们要做一个大作。这个事情本身就是一个笑话,因为没有任何的规划和设计,我们就妄图写出一个杰出的作品出来是不现实的。Unity 在好用,那么以这个心态去做游戏,一定会写不出来好的游戏来。— 刘钢《Unity 项目架构设计与开发管理》以上这段话说得很清楚了,就是做一个项目的时候一定要做规划和设计,当然这是从

2020-06-23 10:06:54

Unity 游戏框架搭建 2019 (五十四、五十五) 第五章简介&Unity 项目架构设计与开发管理

第五章 简介Unity 项目架构设计与开发管理我们在之前花了两篇文章对架构、框架和库进行了简单的介绍。而我们到目前为止,已经写了十四个示例了。目录如下:我们并没有去为了写框架而写框架,而是一个个实际问题地解决,最后解决出来了一个小框架 MonoBehaviourSimplify,又趁势去了解了一点架构、框架和库的概念,一切是那么地自然。那么既然接触了架构、框架和库的概念,我们就可以接下来为搭建框架做准备了,而示例也积累了很多,整理的时机也成熟了,所以到此呢,我们的第二次学习收集示例的阶段就可

2020-06-09 10:19:26

Unity 游戏框架搭建 2019 (五十二) 什么是库

在上一篇,我们对框架和架构进行了一点探讨。我们在这一篇再接着探讨。什么是库呢?来自同一位大神的解释:库, 插到 既有 架构 中, 补充 特定 功能。很形象,库就是搞这个的。我们的库最初存在的目的,就是收集知识,而收集知识是一般的架构(项目)中是没有的,那么我们为了补充特定功能(收集知识),就要把我们的库导进来,然后收集一两个示例,再导出去,然后删除掉项目中库的文件,消除痕迹以免被其他人发现:) ,而这个库补充的收集知识这个功能是对于大家有用的,而不是对项目有用的,虽然对大家有用到最后也会慢慢影响

2020-06-03 10:55:17

Unity 游戏框架搭建 2019 (五十一) MonoBehaviourSimplify 是框架?

在上一篇呢,我们的得到了目前库的一个分层图,如下:而这个图中,把我们的库分成两个部分。一部分是框架,一部分是工具/库。框架部分,只有一个 MonoBehaviourSimplify,而工具/库,则是除了 MonoBehaviourSimplify 以外的全部内容。为什么 MonoBehaviourSimplify 是框架呢?我们先来看看框架是什么?框架:提供一个架构(文件结构、约定等等),你必须遵守它,只要你遵守,那剩下的就全部处理通用需求了。这个定义呢是来自某个 JavaScript 大

2020-06-01 21:04:38

Unity 游戏框架搭建 2019 (五十) 消息机制小结

我们花了 5 篇文章学习了消息机制的方方面面。并且完成了一个简易消息机制,之后集成到了我们的 MonoBehaviourSimplify 里。现在 MonoBehaviourSimplify 有一点框架的感觉了。因为 MonoBehaviourSimplify 在提供消息功能的同时,决定了项目脚本中的交互方式。而目前的这套结构,足够用它来完成一个比较小的项目了。消息机制是笔者在接触单例之后,第二次被震撼到的设计模式(观察者模式/发布者订阅者模式)。而笔者在初学的时候,还不太敢去设计 MonoBehavi

2020-05-29 14:08:11

Unity 游戏框架搭建 2019 (四十九) 关于发送事件的简单封装

在上一篇,我们在 MonoBehaviourSimplify 中集成了消息功能。而在做消息功能的过程中,又接触了对象池实现了一个非常简单版本。今天呢我们在接着学习。我们先回顾下 MonoBehaviourSimplify 中关于消息功能的使用方法。注册消息,直接用 RegisterMsg,而注销则在 OnDestroy 的时候统一进行注销。那么单独注销时候怎么办呢?这是第一个问题。第二个问题是,发送消息,我们使用的是 MsgDispatcher.Send 这个方法。和我们的注册消息的方法不是统一

2020-05-27 14:58:21

Unity 游戏框架搭建 2019 (四十八) MonoBehaviourSimplify 中的消息策略完善

在上一篇,笔者说,MonoBehaviourSimplify 中的消息策略还有一些小问题。我们在这篇试着解决一下。先贴出来代码:using System;using System.Collections.Generic;namespace QFramework{ public abstract partial class MonoBehaviourSimplify { Dictionary<string, Action<object>> m

2020-05-24 13:53:41

Unity 游戏框架搭建 2019 (四十七) 集成到 MonoBehaviourSimplify

还记得我们的简易消息机制是为了解决什么问题诞生的嘛?是为了解决脚本间访问的问题。我们回过头再看下 A 脚本如果想访问 B 脚本,使用消息机制,如何实现。代码如下:public class A : MonoBehaviour{ void Update() { if(Input.GetMouseButtonDown(0)) { MsgDispatcher.Send("DO","ok"); } }}public class B : MonoBehaviour{ voi

2020-05-23 11:14:54

Unity 游戏框架搭建 2019 (四十六) 简易消息机制

在上一篇,我们接触了单例,使用单例解决了我们脚本之间访问的问题。脚本之间访问其实有更好的方式。我们先分下脚本访问脚本的几种形式。第一种,A GameObject 是 B GameObject 的 Parent,或者是中间隔着几个层级的 Parent。那这种情况下,如果 A 脚本想调用 B 脚本的方法,直接通过 transform.Find(“XXX/YYY/ZZZ”).GetComponent<B>().DoSomething() 就可以了。但是如果是 B 脚本想调用 A 脚本的方法,

2020-05-11 18:14:07

Unity 游戏框架搭建 2019 (四十五) 独立的方法和独立的类

我们在开始本示例之前,先整理出我们当前库中的代码类型。工具方法:CommonUtil、GameObjectSimplify等。类: MonoBehaviourSimplify。静态方法中的方法全部都是工具方法,都是可以独立使用的,之所以可以独立使用,是因为这些工具方法所在类是没有状态的。什么叫没有状态呢? 比如 CommonUtil,其中的方法不管怎么使用,CommonUtil 类本身不会发生任何改变。但是像我们的 MonoBehaviourSimplify 用了一次 Show,那么它的 gam

2020-05-10 08:52:32

Unity 游戏框架搭建 2019 (四十四) 关于知识库的小结

在上一篇,我们完成了一个定时功能,并且接触了 Action 和委托、lambda 表达式这些概念。到目前为止,我们的库作为知识收录这个功能来说,已经非常好用了,由于使用了 partial 关键字,所以重复的代码少了很多。而作为一个可复用的工具库来说,勉强能够应付。通过 partial 关键字,理论上可以对已有了类,进行无限地增加示例。而我们的示例的类型呢,主要是写可独立使用的方法和 MenuI...

2020-05-07 09:37:39

Unity 游戏框架搭建 2019 (四十三) 定时功能

在上一篇我们完成了 MonoBehaviour 的简化示例,通过做这个示例,强化了一次继承的使用。而为了让示例脚本自动运行,就接触了 EditorApplication.isPlaying 这个 API,有了这个 API 我们之后所有需要运行 UnityEditor 的脚本都可以按照这种格式去做。今天我们再接着往下学习。第十一个示例我们都知道,在项目中,我们会遇到非常多的定时需求。而定时功...

2020-05-05 10:51:49

Unity 游戏框架搭建 2019 (四十二) MonoBehaviour 简化

在前两篇,我们完成了第九个示例。为了完善第九个示例,我们复习了类的继承,又学习了泛型和 params 关键字。我们已经接触了类的继承了。接触继承之前,把类仅仅当做是方法的集合,接触了继承之后,我们的类还可以使用继承来解决一些问题。第十个示例在 Unity 中,我们的脚本都往往继承自 MonoBehaviour,继承了之后我们就可以在脚本内编写很多功能。比如访问 transform/gameO...

2020-05-04 10:03:04

Unity 游戏框架搭建 2019 (四十一) 泛型:结构复用利器

在上一篇我们使用 object 解决了方法结构重复的问题,而在文章的尾部又提了一下更好的方法,就是泛型。泛型对很多初学者来说是比较高级的概念,这里呢我们顺便复习一下泛型。泛型是什么呢?对于方法来说,方法结构中的部分或全部类型都可以先不进行定义,而是到调用方法的时候再去定义。我们的 GetRandomValue 的目前代码如下 :public static object GetRandomV...

2020-04-30 10:38:50

Unity 游戏框架搭建 2019 (三十九、四十) 第四章 简介与方法的结构重复问题

第四章 简介方法的结构重复问题我们在上一篇正式整理完毕,从这一篇开始,我们要再次进入学习收集示例阶段了。那么我们学什么呢?当然是学习设计工具,也就是在上篇中提到的关键知识点。这些关键知识点,大部分来自于 C# 语法。不过在此之前,我们先实现一个功能,这个功能是,传入几个数字,随机取出其中一个数字。比如传入 1,3,5,7 从这四个数字中随机取出一个数字出来。其实现很简单 代码如下:...

2020-04-29 10:02:08

Unity 游戏框架搭建 2019 (三十七、三十八) partial 和 public 的合理使用以及整理完结篇&第三章 小与快速复习

在上一篇中,我们学习了新的知识 partial 关键字,那么我们什么时候该用 partial 呢?我们简单分析一下:像 GameObjectSimplify 和 TransformSimplify 都是很可能增长的类,所以自然就要用到了。而我们的 CommonUtil、EditorUtil、MathUtil 也是非常大的一个范畴,随着时间,要加的东西也会越来越多的。所以这两个类也要加上 p...

2020-04-28 10:28:15

Unity 游戏框架搭建 2019 (三十六) 类在多个文件中实现:partial 关键字

在上一篇,我们把菜单的顺序从头到尾整理了一遍。在整理菜单顺序的过程中,记录了一个要做的事情。要做的事情:(完成) 备份:导出文件,并取一个合理的名字。整理完菜单顺序后,学习新的知识,解决随着示例增多,可能出现类需要合并的问题。我们要学习新的知识,试着解决类的合并问题。首先我们来看下要合并的类是什么,在我们的示例中是 TransformSimplify,这个 TransformSimpl...

2020-04-26 13:38:44

Unity 游戏框架搭建 2019 (三十五) 整理接近尾声

OK,我们接着整理第十一个示例第十一个示例代码如下using System;#if UNITY_EDITORusing UnityEditor;#endifusing UnityEngine;namespace QFramework{ public class TransformSimplify { /// <summary> /// 重置操作 ...

2020-04-25 12:11:50

查看更多

勋章 我的勋章
  • 签到新秀
    签到新秀
    累计签到获取,不积跬步,无以至千里,继续坚持!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv3
    勤写标兵Lv3
    授予每个自然周发布7篇到8篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。