这么拗口抱歉,看到朋友的Game NE Game释放了游戏源代码,忍不住对其进行一些分析。
先从GameInfo入手
1. 控制角色的引用
var Rolling Ball;
2. 下面是我很想知道的几个系统细节
var bool bEntryGame;
var bool bIsPaused;
var bDoTutorial; //系统级别的内容我一般很少投入精力,但是这非常有必要。
3. 放音乐也是一个重要的环节
var AudioComponent musicTracks[2];
var AudioComponent CurrentMusicTrack; //后边放了两个变量还不是很清楚其目的,记录下来后边肯定能用上
var float MusicMultiplier;
var string CurrentMusicMobile;
4.存储文件
var NESave SaveFile; //存储文件存储在游戏中,他分了两个游戏类型,进入游戏之时和进入游戏中
也有一些人将存储文件放置在Controller中,像我,现在还不知道两者的利弊,也许研究完毕它的代码会有一些启发。
5.这里我又见到了一个有启发性的内容
var GlobalMapData maps; //这是他写的地图类,可能是为每张地图进行描述
var bool IsReplay; //同样引入是否重玩地图
var int level; //目前正在玩的关卡
6.他自己的写的成就系统,基于GameCenter.
var NEAchievementHandler AchievementHandler;
7.剩下一个是自己的Controller类.
进入函数部分event PreBeginPlay() 相比于PostBeginPlay这个函数的执行更早一步,具体到哪一步呢?好吧,起码可以在这里加载地图信息让玩家进入哪一关,当然controller也是可以的。这仅仅是取决于你自己想要加载到哪一关。
savefile=new class'NEsave'; //新建自己的存储文件
/******基于成就系统的成就解锁*******基于GameCenter********/
Level=...
做一些清空信息等,或者是用于计时
SaveGame( );
然后进入PostBeginPlay 声称自己的角色然后启动音乐。
8. 写了一个简单实用的自定义填写Vector
static function MakeVector(float X,float Y,float Z)
{
local vector V;
V.X=X;
V.Y=Y;
V.Z=Z;
return V;
}
9.加载关卡LoadGame 的填充,非常重要的一个选项
该函数有自判断功能,返回一个bool来查看自己是否能加载成功.这样可以检测玩家是否是第一次加载游戏启动教学关卡
local bool bSuccess;
local NESave CreateSave;
bSuccess=savefile.LoadGame(); //savefile是一个全局存储文件
if(!bSuccess)
{
createSave=new class'NESave';
createSave.SaveGame();
Success=savefile.LoadGame();
bDoTutorial=true;
}
return success;
10.全平台的检测
function bool IsMobile()
{
return WorldInfo.IsConsoleBuild(CONSOLE_Mobile);
}