写在前面
像是写作文一样写!
“叮叮叮~ 叮叮叮~”
上班的闹钟响起,我被迫睁开眼睛,习惯性的按掉闹钟;手机上显示闹钟将在10分钟再响。我又闭上了眼睛,大脑里却是思绪万千,虽然离上班还有一段时间,但也没了睡意;索性起来吧。穿衣、洗漱一气呵成;看了一眼窗外,外面还黑蒙蒙的,没有完全亮起来。穿过卧室的走廊,进入客厅,客厅的小爱同学正在进行天气预报。我看了一眼手机的日期,嘴里嘟囔着:“哦, 12月12号,周五了今天是;今年就快要过去了啊”。
回顾
“时间还早,不如回顾一下今年吧。”我自言自语道,“这一年都发生了什么呢?”
我翻开手机日历,思绪也随着日期慢慢浮起:
第一件大事,是我终于拥有了属于自己的房子,从此告别了租房的日子。年假结束后,我回到昆明的家,一个人住进三室两厅的空间,起初还真有些不习惯。加上刚装修完,屋里还残留着些许气味,尤其是卧室定做的衣柜,味道比较明显。于是,我干脆暂时睡在客厅的沙发上,这一睡就是大半年,直到今年国庆前后,才正式搬进卧室。
在新家,我添置了两样东西:一架电子琴,一个扫地机器人。电子琴是为了圆童年的一个兴趣梦,扫地机器人嘛,则是为了拯救我这个“懒癌晚期患者”🙃 ...
NodeCanvas是一款很棒的插件,包含了行为树、对话树、状态机等数据结构,提供可视化的图形服务,依此我们可以扩展一种FlowTree的流式图。
思考
FlowTree
FlowTree是我想要实现的一种数据结构,即流程树结构;在流程树中的所有节点会根据检查条件选择适合的分支依次执行。这其实和官方提供的DialogTree对话树的逻辑是差不多的;但是在对话树基本节点是对话节点。
为了能够执行一些列操作,而这一些操作可能包含对话也可能只是纯粹的Action,故而需要一种新的流程树形式。
从上图中可以看出,我们可以不再依赖于对话节点,我们可以 行为、条件、子图作为起始,也可以根据这些元素作为结尾任意的连接数据。{.yellow}
实现
以上是一个基本树的目录组成结构,分别包括:
++FlowTreeOwner++ 树持有者,继承自MonoBehaviour
++FlowTree++ 树数据,继承自Graph
++FTNode++ 基础节点数据,继承自Node
++FTConnection++ 基础连接数据,继承自Connection
FlowTreeOwner123publi ...
不知不觉,一年的时间就这么过去了😢.回顾这一年的种种,大致可以将其划分为上半年和下半年两大部分。
上半年
上半年 大概都是找工作的事情
上半年的时候,基本还在考编制。印象最深的莫过于获得了烟草公司的笔试机会,在对计算机专业知识一通复习后,我自我感觉良好,没想到行测考的太差与面试失之交臂。自这一场考试深深的提醒了我对于行测等知识的学习能力很差,要想通过行测申论来考取一个工作机会是困难的。而我能为之依靠的除了自身的专业知识之外也没有什么其他的东西了,看着越来越卷的编制大环境,我放弃了省考的机会开始找工作之旅。
论失业1年如何重获工作
自之前从朋友介绍的工作离职,我已经很久(将近一年)没工作了,对于这次找工作可谓是恐惧与期待并存——害怕开始却也期待新的变革。静下心来,好好整理了一份工作简历,把学生时代的一些荣誉填上去、再加上一些自我认知的东西。我觉得,学生时代打下的基础多少能有一些用。整理好了简历,我开始在网络上投递简历,心想着现在就去做游戏吧。我把城市选在了成都,成都离云南不太远,不知道是不是在云南待的有些久了,竟然有些缺乏了走出去的勇气。在成都投递了几天简历,也主动联系了几家公 ...
一句话即可概括:
我在人间凑数的日子 —— 2023
思考
更多的生活属于平静(摆烂),我只记得公司年会上 老板说着什么经济形式不好,竞争对手死了一半,合作伙伴也死了不少;说罢便提到今年 年终奖缓发的消息。
2023了,又过去了一年,每每这种时候看看自己的qq资料卡看到自己年龄又增长一岁,感觉有些恍惚。仔细琢磨,就会感觉头开始疼了,仿佛这是什么不可思考的禁忌法则,无形之中有什么因果规则之力。
“有一间住所、一台电脑、水电网、有吃的,好像我可以在这种地方住一辈子”,有时我不禁这么想。
见闻
寒假时候,妹妹从哈尔滨会昆明来,住在我这里;有幸她拿到了一个区检察院的实习机会。因为工作地点离家很远,我建议他就近找个住处。每周天去晚上回住处,每周五下午回到我这来,每次回来她总有一些青旅的见闻给我分享。
“北上广的画家,厌倦了大城市的钢铁森林,放弃高薪工作;选择到大理居家做自由画家。” “我看到那些高楼大厦就害怕”青年女画家这样说道。在上海工作10年,来到大理,租下一间小屋,在院子里种满花;好好生活好好画画。
“我也是大学毕业”一个中年妇女说道,“直到现在做保姆”。我忍不住插嘴,大学生也有做保 ...
Unity Ui
UnreadUnity Ui 合批学习
Stats 统计面板
stats面板可以展示摄像机范围内,所有游戏对象元素的顶点、面片、批处理次数、CPU耗时等。
参数
说明
备注
tris
三角形面数
verts
顶点数
Batches
批处理个数
Saved By batching
批处理被合并后的批处理个数
实际执行的批处理个数Draw Call
CPU
cpu执行耗时
FPS
时间段执行次数
流畅度
天空盒子
新建一个场景发现,有1.7k的三角和5k的顶点。
++ 这些顶点和三角面其实来源于天空盒,天空盒也是一个模型。 ++
修改为适用纯色背景:
可以看到此时,降低到了2个三角面和4个顶点。如下图所示的分割情况.
批处理
我们最常看到的优化技术大概就是批处理了。批处理的实现原理就是为了减少每一帧需要的draw call数目。为了把一个对象渲染到屏幕上,CPU需要检查哪些光源影响了该物体,绑定Shader 被设置它的参数,再把渲染纹理发送给GPU。当场景中包含了大量对象时,这些操作就会非常耗时。一个极端的例子是,如果我们需要渲染一千个 ...
写在开始
此文用于简单介绍FastyTools工具集,详细使用情况后面有空我再写。😃
FastyTools是我个人一直在使用的一套Unity工具链,包含了一些Unity常用的功能封装和基础轮子,可以大大提升开发效率,我个人用起来很爽。
BaseSystem
BaseSystem是工具集的基础。
包括以下内容:
EventCenter 事件中心
MonoController 全局Mono
ObjectPool 对象池
ResLoad 资源加载
Singleton 单例
GamePlay
包括以下内容:
Bag 背包系统
Csv 处理Csv的相关操作
Localization 本地化
Music 音效管理系统
Save 存储系统
SceneSwitch 场景选择器
TurnSystem 回合制系统
任务链系统
Numerical
包括以下内容:
角色数值
数据类型枚举
玩家主角数据
Skill技能系统
Buffer系统
InputCenter
包括:
玩家输入中心
Touch输入
AI
FSM有限状态机
Astar寻路
BT行为 ...
每年目标
Unread
此文用于计划2022年的目标。
🔝 总体目标
[x] 找到一份合适工作
[ ] 购置一台4K显示器
[ ] 发布一套课程
[ ] Bili Bili 粉丝>3000
📜 Unity技术目标
研究新的技术配套游戏框架
[ ] UIElement 学习
[ ] 考虑设计一套资源管理器替换Odin
[x] GraphView 学习 (尝试之后考虑使用原先的xnode方式)
[x] 设计一套通用的 graph 框架
[x] 移植天赋树系统
Shader
[ ] shader入门精要
❤️美术音乐目标
为了独立游戏梦,程序员也要学美术音乐😄。
这个部分的目标较为不明确,会将学习成果记录在下面的各项中。
绘画
考虑学习像素画和板绘,角色原画,特效等
动画
考虑学习Spine骨骼2D动画
建模
考虑学习Blender的角色建模,简单场景的搭建
编曲
学习基础乐理和常用的电子乐器,目标是能编制简单的曲子。
💭 项目目标
[ ] 完善卡牌游戏
[ ] 制作一个练手塔防游戏
📚 读书目标
读一点杂书,开阔自己的视野。
阅读2本 ...
版本号
创建/更新时间
操作
V1.0
2023-07-13 09:10:43
创建
V1.1
2023-07-19 09:33:17
添加着色器变体说明
YooAssets 是一个资源管理工具,基于ab包实现。
通过YooAssets 可以方便的对资源进行管理、分析、更新。
快速食用
打开管理界面 Edit/Project Settings/Package Manager
1234// 输入以下内容(中国版)Name: package.openupm.cnURL: https://package.openupm.cnScope(s): com.tuyoogame.yooasset
在包管理器中安装YooAssets
划分组别
构建工具
报告工具
在打包后可以使用报告工具查看相关数据:
调试工具
模式
模式
说明
编辑器模式EditorSimulateMode
无需构建,直接使用
离线模式OfflinePlayMode
单机游戏使用
在线模式HostPlayMode
在线游戏热更新
代码范例
封装资源加载
我们可以对通用 ...
EnhancedScroller是一个加强版本的滚动区域组件,可以改善滚动条的性能并实现例如无限滚动的效果。
简单示例
创建一个滑动区域:
滑动区域需要3个部分:滑动区域、滚动条、Mask
可以使用Rect Mask 2D 替代Mask获得更好效果
列表内容都需要继承EnhancedScrollerCellView
PersonItem1234567891011121314151617181920public class PersonItem: EnhancedScrollerCellView{ private TextMeshProUGUI _text; private PersonModel _model; private Button _button; private void Awake() { _text = GetComponentInChildren<TextMeshProUGUI>(); _button = GetComponent<Button>(); ...
📑写在前面
Address是Unity推出的Ab包的新封装,可以更方便的实现Ab包的资源加载,为做区分这里将Address打出的包称之为aa包。
需求环境
在什么情况下我们需要使用Address呢?
当我们需要使用Ab包时,可以使用Address替代传统Ab包。
当我们需要将资源进行分组时,例如美术场景和程序分离。
当我们需要进行热更新时。
当我们希望在外部更新程序或资源时。
…
1.构建本地静态包
先来













