0

我的游戏包括一系列 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是一个数组,其中 item0等于当前任务编号 (1/10),并且 items 123保存每个任务目标的当前状态(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
        }
}
4

0 回答 0