Unity开发之音乐游戏—基础知识

最近工作需要做一款音乐游戏,这种类型从未开发过,对这种游戏也不怎么喜欢玩。程序开发不需要每样都精通,但要求善于分析问题,解决问题。下面汇总一下相关的知识。

一、基本概念:
  • BGM:背景音乐;
  • BPM:每分钟节拍数(Beat Per Minute), 60/BPM 就是每一拍的时间;
  • 采样率:每秒采样数量
  • 采样数:一首BGM的采样总数    总时间=采样数/采样率
  • 音符:二分音符,四分音符(4/4),八分音符,十六分音符,如果bpm为60,一秒为一拍,4/4就是一秒(一拍)弹4个音符(1、2、3、4;2、2、3、4……),同理2/2就是一拍2个音符

下面[……]

Read more

Unity开发之工具一技能参数配置

在开发游戏过程中,涉及到各种数值和特效的调整,就需要程度开发个工具方便策划或特效调整数值,下面介绍一下调整技能数值的工具。

说是工具,其实就是一个场景,提供一参数配置,就长这样:

就这样?还是那句话:能解决问题的工具就是好工具

看一技能表中的数据配置有哪些需要调整的:

可以看到需要调整的条目还是很多的,从对象的角度看就两个,一个是具体的技能,一个是所属的角色,所以工具脚本中提供 Fairy File和Skill SID,确定这两个其他的数值都有了,然后在运行过程中调整即可

从Excel中导表到程序中可以查看Unity开发之导表(Excel)工具的制[……]

Read more

Unity开发之工具—GPS数据采集

工具系列:
Unity开发之导表(Excel)工具的制作分析

工欲善其事,必先利其器。程序开发离不开各种工具的制作。下面介绍获取GPS数据工具的制作。

制作这个工具的前提,必须先制作好Unity定位插件的开发,关于定位插件的开发介绍,传送门:

Unity开发高德地图定位和地理围栏插件(iOS)

Unity开发高德地图定位和地理围栏插件(Android)

先看一下效果图:

从界面看还是比较简陋的,但能完成目标的工具就是好工具。

首先开启定位

在成功开启定位后,走到要添加的位置[……]

Read more

Unity开发之网络一TCP服务端实现

Unity开发之网络—集成Protobuf

Unity开发之网络一HTTP客户端实现

Unity开发之网络一HTTP服务端实现

Unity开发之网络一TCP客户端实现

下面介绍服务端,共涉及三个类:SocketModule,SocketEngine,ServerSocketItem

SocketModule:同客户端,定义接口及数据包结构等定义;

SocketEngine:服务端接收客户端连接等处理;

ServerSocketItem:单个客户端数据交互的处理;

下面主要介绍SocketEngine

开启服务
[crayon-5b4d[……]

Read more

Unity开发之网络一TCP客户端实现

网络开发系列

Unity开发之网络—集成Protobuf

Unity开发之网络一HTTP客户端实现

Unity开发之网络一HTTP服务端实现

下面介绍Sockt通信的实现,和Http相比Tcp/IP实现要复杂一些。不过使用C#语言开发要容易了很多。为什么这样说呢,因为以前写过使用C++实现Socket通信,在项目中已经编写完成,但因为外因,项目没有上线,最后日志也不了了之

跨平台客户端Socket 一 数据包定义

下面介绍使用C#实现Socket通信,包体结构及定义从C++修改而来。

主要涉及三个类SocketModule,ClientSocket[……]

Read more

Unity开发之网络一HTTP服务端实现

在前一篇介绍Http客户端的实现方式:Unity开发网络一HTTP客户端实现,下面介绍服务端

1.使用VS创建Web项目

2.添加Handler.ashx

Handler.ashx.cs实现

说明:

1.ProcessRequest接收到客户端请求;

2.处理请求分POST和其他方式,暂时只处理POST;

3.读取数据使用DNTRequest.GetFormString(“data”) 从Form中读取;

4.客户端的ContentType 必须设置为”application/x-w[……]

Read more

Unity开发之网络一HTTP客户端实现

客户端实现参考:Unity发送HTTP请求和文件下载

注意:仅通过WebRequest实现POST方式,通过测试

Http请求主要涉及两个类:HttpRequest,HttpResponse,在参考的实现基础上有改动

HttpRequest

HttpResponse

在两个类的基础上,封装HttpHelper方便应用中使用

调用示例:
[crayon-5b4d0f40[……]

Read more

Unity开发源码的加解密二一打包自动加密

在前一篇Unity开发源码的加解密 涉及的内容比较多,最终得到了加密后的Assembly-CSharp.dll和解密libmono.so。如何能在打包的时候自动处理呢?下面介绍一种方式。

[PostProcessBuild]标签:Add this attribute to a method to get a notification just after building the player. 作用就是获取打包后通知,执行添加后的方法.

处理函数如下:

看一下iOS具体的处理,可以添加引用库,修改info.pl[……]

Read more

Unity开发源码的加解密一mono.dll和libmono.so编译

源码的加密,只是加了一层防护,不是绝对的安全,参考网络大部份类似的实现方式:

  1. 混淆自定义库
  2. 加解密Assembly-CSharp.dll
  3. 自动化工具集成

一、使用各种加密方法制作C++动态库DEncrypt.dll

加密方法,使用xxtea示例

解密方法

检查导出的方法

除了xxtea,也可以使用des,aes等对称加密方式

参考:C++动态库[……]

Read more

Unity开发之设计模式—状态模式

曾记录一篇关于设计模式的日志:《Head First 设计模式》——学习总结,在那篇文章中只是记录一些重要的概念,缺乏实战,也不好理解。下面记录在项目中使用到的设计模式,理论和实际相结合才有价值,“把模式装进脑子里,然后在你的设计和已有的应用中,寻找何处可以使用它们。”

在回合制模式的战斗游戏中,为了很好控制角色的行为,使用有限状态机会容易的多。

quick-lua版本中提供有限状态机实现,是从js移植过来,很容易使用(时间有点久可能记错了),js版本

在C#使用状态机的问题就是类比较多。状态机的实现方式也有很多种,我选择其中一种来实现,一个子状态接口和状态机类,代[……]

Read more