0%
用Unity做个游戏(五) - 编辑器扩展
用Unity做个游戏(四) - UI
用Unity做个游戏(三) - 日志相关
前言
本来是想接着写UI相关的东西的,不过上一篇提到了SFUtils
这个类,干脆就先介绍下有关于日志方面的封装
目的
这个游戏目前的目标平台是PC和Mac,移动平台有网络同步效果方面的顾虑,之后再考虑。
当然这不是主要问题,主要问题是Unity日志实在是太难用了,直接使用Debug.Log()
是最常用的方式,然而这样做只会把日志输出到UnityEditor的Console里,实在是有点难看,唯一的好处是双击某一行可以直接跳转到响应的代码行。不过作为外貌协会成员,还是想办法把这个尽量弄的优雅吧。
想法是统一把info,warning,error这些统一为一种日志,全部记录到文件里,这样的话我们翻之前的日志也比较方便,不会丢失。如果配合实时日志查看器的话(之前还开了个坑,不过最近估计没时间填了orz),就简直完美了~
用Unity做个游戏(二) - 事件系统
用Unity做个游戏(一) - 开新坑
之前那篇cocos转unity的系列算是坑了(撒花
前言
自己是在用unity去尝试做游戏的,中间也遇到了很多很多各种各样的问题,也都在努力去解决。
到目前为止也取得了很明显的成果:主流程都是通的,现在允许多个玩家同时在线,在同一个场景中移动,转向,释放技能;服务器也能妥当的同步各个玩家的信息给所有人。
不过问题也越来越多,由于现在网络通讯机制的问题,总是会出现莫名其妙的网络断开,而且断开的只是客户端接收响应的通道,客户端依然能够发给服务端消息, 服务端也可以收到,当然也正常地返回结果给客户端,然而这里客户端就收不到了。
另外一个情况是:现在的同步机制是客户端各自模拟逻辑和运动,服务端只是负责同步各自的位置,某个玩家把自己的位置告知服务端,服务端再广播给所有其他玩家。这样就会有个问题,由于网络延迟的存在,不同玩家看到的场面局势是不一样的,而且现在也没有对技能释放出来的抛出物进行同步,那些火球的攻击判定也是客户端自行判断的,而且不同客户端的判断结果很有可能不一样,这已经很难再进行优化了,要改的话必须改成由服务端计算所有移动判定逻辑,客户端只负责发送指令和显示服务端推送的位置信息,自己移动时客户端不做移动,仅当传送给服务端的指令信息被处理,服务端推送给客户端位置变化的
Redis基本用法(二)
接上篇,继续介绍数据类型
其他数据类型
集合Set
集合包含一堆不重复的字符串,内部实现采用哈希表,增删改查的时间复杂度都是O(1)
SADD key value...
- 向一个集合中添加一个或多个元素,如果集合key不存在,则新建一个集合,如果集合中已经存在指定的值,这个值则会被忽略,返回成功插入集合元素的个数,如果key已经存在但是不是集合类型,则会返回一个错误WRONGTYPESCARD key
- 返回集合中元素的个数SMEMBERS key
- 返回集合中的所有元素SDIFF key1 [key2...]
- 返回集合key1与key2的差集,key2可以有多个SINTER key1 [key2..]
- 和上面一条类似,返回所有参数集合的交集SUNION key [key2...]
- 同上,返回所有参数集合的并集,另外,这三个命令还有对应的一组,即SDIFFSTORE dest key1 [key2...]
,以此类推,在命令后面加STORE。此时参数也要增加一个dest到第一个参数的位置,作用为把后面若干个集合key1…的差集/交集/并集储存到第一个参数指定的集合dest中,并返回dest中的元素个数SREM key value1...
- 移除集合中一个或多个元素,不存在的元素会被忽略,最后返回成功移除的元素的个数
Redis基本用法(一)
macOS安装旧版本SVN1.7
现在macOS自带的SVN版本是1.9的了,然而项目使用的版本还是1.7的,所以为了在命令行中使用svn,就必须另外安装1.7版本的svn
首先尝试homebrew,结果发现homebrew只提供了1.8的版本