Torque X 官方文档中文译稿(2)——模板系统

模板系统

Torque X使用模板系统来创建新的对象。一个模板就是一个普通的游戏对象,除了模板对象不可以在引擎中注册。取而代之的是,克隆一份模板,然后将这个模板对象注册到引擎中。

一个模板的例子

假设你有一个反坦克炮的游戏。玩家目标是摧毁所有燃料储罐。在游戏中会出现相当多的燃料罐。你需要配置一个基本的燃料罐对象,然后重复地创建燃料罐。在Torque X中,燃料罐对象被配置为一个模板。当你需要创建燃料罐时,就去克隆这个模板。克隆返回的对象等同于燃料罐模板。将它放置在合适的位置,然后注册它。现在你就拥有了一个燃料罐,并且原始的燃料罐模板依然能够被继续克隆。下面的代码描述了这个过程:

T2DSceneObject fuelTankTemplate = TorqueObjectDatabase.Instance.FindObject<T2DSceneObject>("FuelTank");
if (fuelTankTemplate != null)
{
    T2DSceneObject fuelTank = (T2DSceneObject)fuelTankTemplate.Clone();
    fuelTank.Position = new Vector2(50, -20);
    TorqueObjectDatabase.Instance.Register(fuelTank);
}
 

 

注意,在克隆之前,我们必须确保模板不为空。这是一个好的习惯,因为模板可能不存在。例如,燃料罐模板被声明为levelData.txscene文件。这使得该模板能够更容易地从Torque X 2D引擎中移除。如果你没有检查它是否为空,那么当你试图去克隆该模板时,游戏将会异常中止。另外一个找到模板对象的方法如下所示:

// unsafe way to find a template object
T2DSceneObject fuelTankTemplate = (T2DSceneObject)TorqueObjectDatabase.Instance.FindObject("FuelTank");
 

 

这个版本的确管用,但是当模板对象被找到但是并不是想要转换的类型,那么会抛出异常。出于这个原因,我们建议你使用FindObject的带参重载来完成查找模板的工作。

 

如何指定一个模板

我们已经知道,模板和一个普通的对象是一样的,除了它的IsTemplate属性是true以外。下面是一个例子:

T2DSceneObject myTemplate = new T2DSceneObject();
myTemplate.Position = new Vector2(50, 50);
myTemplate.Name = "Position5050Template";
myTemplate.IsTemplate = true;
 

 

在这个例子中,一份克隆自模板的对象的位置被设置为了50,50。但是此刻它不包含任何组件,且其他值都为默认值。所以在你真正能够使用这份克隆对象之前,你需要更多的配置代码。

你可能感兴趣的:(游戏,工作)