我的游戏包括一系列10个任务,每个任务有3个目标在游戏过程中完成(非常类似于成就)。一旦3个目标以任何顺序完成,任务就完成了,玩家将获得下一个任务目标。
我正在努力解决这个问题。我已经创建了一个10长度的任务类数组,每个类包含一个3长度的类数组,用于每个目标细节(名称,目标值,完成状态等)。这是一个好的开始,并允许我轻松查看已达成的客观事件是否属于当前任务的一部分,或者是否应该被忽略,因为它目前尚未激活。
var missionControl : MissionClass[];
class MissionClass
{
var mission = new ObjectiveInfo[3];
}
class ObjectiveInfo
{
var name : String;
var goalValue : int;
var completionState : boolean;
var total : int;
}
然而,我打算发送目标事件的方式是发送一个字符串引用,而不是指向数组中的某个位置(以防我稍后改变顺序),但是如何使用字符串来找到一个数组中的项目,然后检查该项目的父任务类是否是当前活动的任务?
function ObjectiveCheck ( objectiveName : String )
{
// Find the objective by name
// Find out if the objective we've been passed is part of the currently active mission
// If it is, check if we've met the goalValue, if so set objective to completed
}
//使用字符串比较编辑:新代码。 missionStatus
是一个数组,其中项0
等于当前任务编号(1/10),项1
,2
,3
保持当前状态每个任务目标(0 =不完整,1 =先前完成,2 =新完成)。
function ObjectiveCheck ( objectiveName : String, num : int )
{
// Find out if the objective we've been passed is part of the currently active mission and see if it's met the goal value
var currentMission = missionControl[ missionStatus[0] ];
for ( var i=0; i < 3; i++ )
if ( missionStatus[i+1] == 0 && currentMission[i].name == objectiveName && num >= currentMission[i].goalValue )
{
missionStatus[i+1] = 2;
// Play mission complete sound
}
}