在游戏开发中,C#的事件主要用于处理程序中的特定操作或状态变化。事件通常用于响应用户输入、游戏对象的状态改变、定时器等。以下是在C#中使用事件的一般步骤:
public class MouseClickEventArgs : EventArgs
{
public Vector2 Position { get; set; }
public bool IsLeftButtonPressed { get; set; }
public MouseClickEventArgs(Vector2 position, bool isLeftButtonPressed)
{
Position = position;
IsLeftButtonPressed = isLeftButtonPressed;
}
}
event
关键字声明。public class GameObject
{
// 定义事件
public event EventHandler<MouseClickEventArgs> MouseClicked;
// 触发事件的方法
public void OnMouseClicked(Vector2 position, bool isLeftButtonPressed)
{
MouseClicked?.Invoke(this, new MouseClickEventArgs(position, isLeftButtonPressed));
}
}
+=
操作符将事件添加到事件发布者的订阅列表中。public class PlayerController
{
public PlayerController(GameObject gameObject)
{
// 订阅事件
gameObject.MouseClicked += HandleMouseClick;
}
// 处理事件的方法
private void HandleMouseClick(object sender, MouseClickEventArgs e)
{
// 处理鼠标点击事件
}
}
OnMouseClicked
方法来触发事件。public class Game
{
public void Update()
{
// 游戏逻辑...
// 检查鼠标点击事件是否触发
if (Input.IsMouseClicked())
{
gameObject.OnMouseClicked(Input.GetMousePosition(), Input.IsLeftButtonPressed());
}
}
}
这样,当游戏对象接收到鼠标点击事件时,PlayerController
类中的HandleMouseClick
方法将被调用,从而实现对游戏事件的响应和处理。