一、数据类型选择 

转载自:http://www.xuanyusong.com/archives/1919

 

     客户端与服务器的交互,使用JSON 和XML会感觉数据量太大,影响效率。使用二进制可以很大把空间节省。

在写入二进制数据时用到的核心类就是BinaryWriter ,Binary是二进制的意思 ,可见操作二进制写入就用BinaryWriter了。 常用的数据类型会分配固定的字节数量,假设BinaryWriter 写入一个short 那么就占2字节,写一个 int 就占4字节,如果是数组的话需要数组类型字节长度在乘以数组长度。

byte:一个字节(8位) 
short:两个字节(16位) 
int:四个字节(32位)(一个字长) 
long:八个字节(64位)
float:四个字节(32位)
double:八个字节(64位)

然后在说说string,字符串它并不是标准的数据类型,它是一个对象 object 那么它的字节长度就是可变的。还有BinaryWriter 在写入string 的时候会现将字符串的长度以byte的形式储存,然后在储存该字符串的占用的字节长度。那么在解析字符串的时候需要先解析字符串长度,然后在根据长度取得后面对应长度的字节数组,再把这个字节数组转换成string。写入的时候我们用的是BinaryWriter 那么读取的时候应该是 BinaryReader。

 

二、灯光相关

1、使用光照贴图lightmaping对所有静态物体进行光照贴图

(1)、Single Lightmaps最简单,对性能及空间消耗较小,需要多张LightMap才能表现物体凹凸细节

(2)、Dual Lightmaps如果用户希望在大的游戏场景中表现较多的光影细节 ,同时希望多 一 实时光影 ;或使动态物体和静态物体的光影融舍得更协调 一 些 ,且不会因为场些景过大而没有足够的性能来完成这些工作 ,Dual lightmaps是满足这样需求的 一个理想方案。要使用Dual LightMaps,那么需要设置Camera属性中的Rendeing Path为Deferred Lighting.需要在近区域实时光照的光源的ightmapping属性设置为 Auto。

(3)Directional Lightmaps结合了前两者,并且解决了前两者的缺点