官术网_书友最值得收藏!

Time for action – Examining inheritance

  1. We can see an example of this by taking a look at the class tree in UnCodeX, under Actor | Inventory | Weapon | UDKWeapon. Expanding UTWeapon we can see the different types of weapons provided as examples in the UDK:
    Time for action – Examining inheritance

    We can see that UTBeamWeapon (like the plasma gun we start with when running the game), UTWeap_RocketLauncher , and UTWeap_ShockRifleBase are amongst our weaponry. Each of these behaves differently, but all of them have common functionality.

  2. Clicking on UTWeapon, we can see some of its variables.
    /** Initial ammo count if in weapon locker */
    var int LockerAmmoCount;
    
    /** Max ammo count */
    var int MaxAmmoCount;
    
    /** Holds the amount of ammo used for a given shot */
    var array<int> ShotCost;

What just happened?

Things like MaxAmmoCount and ShotCost are common to all of the weapons, so instead of having to duplicate the variables to all of the subclasses, they're declared in all of the weapons' parent class, UTWeapon. Indeed, if we look at UTWeapon's subclasses like UTWeap_RocketLauncher, we won't find MaxAmmoCount or any of UTWeapon's other variables declared in any of them.

Speaking of weapons, I think it's time we started having a little fun with our code. AwesomeActor has been good to us so far, but he doesn't really do a lot besides sit there and send out log messages. Let's make a weapon.

主站蜘蛛池模板: 大竹县| 尉氏县| 怀仁县| 汉中市| 营口市| 平潭县| 宁津县| 博兴县| 桂东县| 苏尼特右旗| 连州市| 大英县| 皋兰县| 曲水县| 靖边县| 青海省| 朝阳区| 屯留县| 河西区| 嫩江县| 灵寿县| 柞水县| 汉源县| 定远县| 黑河市| 中宁县| 安仁县| 宁阳县| 翼城县| 勐海县| 浪卡子县| 会理县| 彰武县| 雅安市| 灵石县| 澄城县| 七台河市| 积石山| 三明市| 泸水县| 肥乡县|