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");
    }

  • 相关阅读:
    cron表达式详解(转载)
    Swagger 3.0使用教程(转载)
    springboot整合shiro-对密码进行MD5并加盐处理(十五)(转载)
    redis排序
    引用和指针的区别?
    测试策略
    主键、外键的作用,索引的优点与不足?
    您所熟悉的软件测试类型都有哪些?请试着分别比较这些不同的测试类型的区别与联系(如功能测试、性能测试……)
    UI测试测什么
    数据库,数据库管理系统,数据库系统三者的区别和练习?
  • 原文地址:https://www.cnblogs.com/ly570/p/11154070.html
Copyright © 2011-2022 走看看