353人加入学习
(6人评价)
Steam模拟经营游戏《冒险村的商人日记》从开发到上架全流程

开发 策划 美术 音乐 发行 全部教给你

价格 ¥ 890.00

C# 事件监听操作

 

https://blog.csdn.net/Joyeishappy/article/details/96469090

 

//窗口1 Form1

注册监听事件


 
  1. public delegate void ListenerHandler();

  2. public event ListenerHandler Listener=null;

  3. public void DoSomeThing() {

  4. if (Listener!=null)//确定事件已被订阅,也就是已被注册

  5. {

  6. Listener();//触发事件

  7. }

  8. }

//窗口2 Form2


 
  1. Form1 f1=new Form1();

  2. f1. Listener+=new ListenerHandler(noteMe);//订阅(注册)窗口1的Listener事件

  3. //事件处理方法

  4. private void noteMe(){

  5. //定义窗口1的Listener事触发后执行的动作

  6. }

//执行

f1. DoSomeThing();//执行

//触发事件是个主动的过程,没有什么监听,就像你执行一个方法一样

[展开全文]

这里要对游戏要素进行拆分, 需要细分游戏的要素( 农场游戏来说 ):

  • 地块需要包含以下的内容:

    • 类型, 用于区分是否可以被购买, 是否可以进行建造, 是否可以移除

    • 价格, 用于土地是否可以被玩家购买下来

  • 玩家需要包含以下的信息:

    • 身上的拥有多少金币, 是否可以进行购买/建造操作

  • 界面需要包含以下信息:

    • 点击土地的时候, 是弹出还是显示对应窗口

    • 判断是购买弹出窗口界面, 还是建造/升级窗口界面

 

对于类型可以利用数值来处理类型, 也可以通过 `enum` 枚举来定义选择类型, 按照使用情况来进行选择即可.

 

GroundProperties 脚本内容:

using UnityEngine;

/// <summary>
/// 土地属性类型
/// </summary>
public class GroundProperties : MonoBehaviour{

    /// <summary>
    /// 土地的通用类型标识( 公开的类型对象 )
    /// 可以通过 GroundProperties.StatusFlags.Empty 直接获取
    /// </summary>
    public enum StatusFlags {
        Empty, // 空地
        Payed, // 已购买
        Build, // 已经建造
    }

    /// <summary>
    /// 土地当前状态
    /// </summary>
    public StatusFlags Status { get; private set; }

    /// <summary>
    /// 土地的价格
    /// </summary>
    public readonly int Price = 200;
}

 

GameController  脚本内容:

using UnityEngine;

/// <summary>
/// 游戏控制器类
/// </summary>
public class GameController : MonoBehaviour{
    // 其他代码略
    void Update(){
        // 获取土地状态, 并判断土地状态
        switch (activeGroundProp.Status) {
            case GroundProperties.StatusFlags.Empty:
                Debug.Log("弹出购买土地");

                break;
            case GroundProperties.StatusFlags.Payed:
                Debug.Log("弹出购买土地");

                break;
            case GroundProperties.StatusFlags.Build:
                Debug.Log("弹出建造土地");

                break;
        }  
    }
}

 

[展开全文]

授课教师

独立游戏制作人,业余程序

课程特色

视频(245)
下载资料(22)
图文(1)