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

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.

主站蜘蛛池模板: 晋州市| 司法| 和静县| 宜黄县| 来凤县| 莱西市| 清流县| 白山市| 稷山县| 资阳市| 苍山县| 石台县| 曲周县| 丹寨县| 南澳县| 兰溪市| 台中县| 宜城市| 中西区| 安丘市| 北辰区| 永胜县| 密山市| 阆中市| 平南县| 正宁县| 昌吉市| 通江县| 得荣县| 伊川县| 昭平县| 德兴市| 太湖县| 邵阳县| 宜宾市| 三明市| 黑河市| 琼结县| 吉木乃县| 朔州市| 全椒县|