zoukankan      html  css  js  c++  java
  • 设计模式学习(沙盒模式)

    控制类
    using UnityEngine;
    using System.Collections;
    using System.Collections.Generic;

    public class TestSubclassSandbox : MonoBehaviour
    {
    //A list that will store all superpowers(一个存储所有超能力的List)
    List<SuperPower> _superPowers = new List<SuperPower>(); //一个成员为基类的List用来调用类,把行为实例化!!

    private float _elapsedTime = 0.0f;

    void Start()
    {
    _superPowers.Add(new SkyLaunch());
    _superPowers.Add(new GroundDive());
    _superPowers.Add(new FlashSpeed());
    _elapsedTime = Time.realtimeSinceStartup;
    }

    void Update()
    {
    //Trigger once per second(每一秒触发一次)
    if (Time.realtimeSinceStartup - _elapsedTime > 1f)
    {
    for (int i = 0; i < _superPowers.Count; i++)
    {
    _superPowers[i].Activate(); //因为已经有实例化的对象了,调用对象里的成员函数
    }
    _elapsedTime = Time.realtimeSinceStartup;
    }

    }
    }
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    基类
    using UnityEngine;
    using System.Collections;

    //This is the base class(基类)
    public abstract class SuperPower
    {
    //Abstract interface for sub class(给子类提供的抽象接口)
    public abstract void Activate();

    //Some of the tool methods given to the child class(给子类提供的一些工具方法类)
    protected void Move(float speed)
    {
    Debug.Log("Moving with speed " + speed + "!(速度)");
    }

    protected void PlaySound(string coolSound)
    {
    Debug.Log("Playing sound " + coolSound+"!(音效)");
    }

    protected void SpawnParticles(string particles)
    {
    Debug.Log("Spawn Particles "+ particles+"!(粒子特效)");
    }
    }
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    一个派生类
    using UnityEngine;
    using System.Collections;

    //Subclasses
    public class SkyLaunch : SuperPower
    {
    //Has to have its own version of Activate()(子类实现自己版本的Activate()方法)
    public override void Activate()
    {
    Debug.Log("--------------------------SkyLaunch SuperPower Activate!--------------------");
    //make own unique features.(组合子类自己独特的功能)
    Move(10f);
    PlaySound("SkyLaunch");
    SpawnParticles("SkyLaunch Particles");
    }

  • 相关阅读:
    虚函数&纯虚函数&抽象类&虚继承
    指针的各式定义
    开源站点
    WCF、Net remoting、Web service概念及区别
    asp.net 分布式应用开发
    C++多重继承二义性解决
    ATL7窗口类详细剖析
    Code review
    GitHub 上100个最受欢迎的Java基础类库
    JAVA基本类库介绍
  • 原文地址:https://www.cnblogs.com/ly570/p/11154070.html
Copyright © 2011-2022 走看看