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

  • 相关阅读:
    Manage It! Part 2 规划和组织项目
    【转载】如何迅速成为Java高手
    Eclipse中最常用的快捷键
    向SQL Server全文索引进军,艰难历程
    数据库函数整理
    ASP.NET MVC简单编程篇(一)
    SQL Server存储过程及高级应用
    定义和赋值的区别 构造函数和拷贝构造函数
    SQL Server 2000
    Coustom web control 自定义控件
  • 原文地址:https://www.cnblogs.com/ly570/p/11154070.html
Copyright © 2011-2022 走看看