关于GitHub的朋友的NE Game

Posted on 2013-04-24 11:14  neocsl  阅读(431)  评论(0编辑  收藏  举报

  这么拗口抱歉,看到朋友的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);
  }