用于检测目标是否已实现的系统

时间:2013-10-20 01:20:54

标签: arrays function unity3d unityscript achievements

我的游戏包括一系列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),项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
        }
}

0 个答案:

没有答案