本文将记录我在游戏开发的路上所学到的关于游戏制作的全部技巧
小地图
不规则图形显示: 方法1:使用带透明色的贴图 方法2:使用Alpha贴图做显示模板,使用的时候进行Alpha值的相乘。
点击判断: 方法1:使用近似形状进行鼠标包含检测。 方法2:使用Alpha贴图,在内存中保留一份Alpha贴图,判断鼠标点的Alpha值。
Ogre
从 .mesh文件中获取 mesh 对象
核心思想是使用Ogre规定的文件流读取方式来获取。
方法一:
使用 MeshManager::load(" mesh文件名称");得到。注意,该函数会在Ogre资源管理器中的路径进行查找
方法二:
使用std:ifstream 以 std::ios::binary 方式读取mesh文件
然后使用 Ogre::FileSerializerStream 对象,创建的使用利用刚才的 std::ifstream 对象
然后使用 Ogre::MeshSerializer 对象的 importMesh 方法。
需要注意的是,importMesh函数接受的 mesh指针,必须要有实际空间, 即 Ogre::Mesh* pDest = new Ogre::Mesh( NULL, "dasd", 0, "");
编译技巧
VS2005:
每次生成exe文件的时候让版本号自动加1
主要思路是使用宏,在编译之前进行文本替换。 1、打开VS2005,按Alt+F11,启动宏IDE。 2、双击 MyMacros 项目,双击 EnvironmentEvents。 3、在文本编辑器的类名中选择BuildEvents,方法名称选择OnBuildBegin,会生成以下代码:

PrivateSubBuildEvents_OnBuildBegin(SubBuildEvents_OnBuildBegin(ByValScopeAsEnvDTE.vsBuildScope,........)

EndSub
在这个段中添加以下代码:
Dimfull_pathAsString
full_path="d:/vsproject/code/version.h"'如果需要该.rc文件中的版本信息,这里需要改成RC文件路径
DimTextAsString
UsingfileAsStreamReader=NewStreamReader(full_path)
Text=file.ReadToEnd()
EndUsing

DimpatAsString="#defines+ClientBuildNumbers+([0-9]+)"'这里也需要改成你关心的文本。使用正则表达式
DimrAsRegex=NewRegex(pat,RegexOptions.IgnoreCase)
DimmAsMatch=r.Match(Text)
Dimold=Val(m.Groups.Item(1).Value)
old=old+1

DimresultAsString="#defineClientBuildNumber"&old'这里也是
Text=r.Replace(Text,pat,result)

UsingoutputAsStreamWriter=NewStreamWriter(full_path)
output.Write(Text)
EndUsing
4、编译一下这个宏。这样每次执行Build命令的时候,头文件 version.h 中的 ClientBuildNumber 每次+1。

被折叠的 条评论
为什么被折叠?



