unity中Main()方法

unity自带的方法有 Start() Enabled() Awake() ,有意思的是void Main() 也是引擎可以自动调用的,调用的顺序是在Awake 和 Start 之间

### 如何在 Unity C# 中定义和使用虚方法 #### 定义虚方法 为了支持多态行为,在基类中可以声明虚方法。这些方法允许派生类提供特定实现,而调用者可以通过基类类型的引用访问到最合适的版本。 ```csharp public class BaseClass { // 声明一个虚拟的方法 public virtual void Display() { Console.WriteLine("这是来自BaseClass的Display方法"); } } ``` 此代码片段展示了一个名为 `BaseClass` 的类,其中包含一个标记为 `virtual` 的 `Display()` 方法[^4]。 #### 使用虚方法 当创建了继承自带有虚方法的基类的新类时,可以选择通过使用 `override` 关键字来覆盖该虚方法的行为: ```csharp public class DerivedClass : BaseClass { // 覆盖基类中的Display方法 public override void Display() { Console.WriteLine("这是来自DerivedClass的Display方法"); } } // 测试程序入口点 public class Program { public static void Main(string[] args) { BaseClass obj1 = new BaseClass(); BaseClass obj2 = new DerivedClass(); obj1.Display(); // 将会打印 "这是来自BaseClass的Display方法" obj2.Display(); // 将会打印 "这是来自DerivedClass的Display方法", 展现了多态性 } } ``` 上述例子说明了即使变量类型是 `BaseClass` 类型,实际对象如果是 `DerivedClass` 实例,则运行时会选择执行子类中被覆写后的 `Display()` 方法。 对于Unity环境下的具体应用案例来说,通常会在脚本组件里操作游戏逻辑,下面是一个更贴近于Unity场景的例子: ```csharp using UnityEngine; public abstract class CharacterController : MonoBehaviour { protected Rigidbody rb; // 初始化物理刚体组件 protected virtual void Start(){ rb = GetComponent<Rigidbody>(); } // 更新角色状态 protected virtual void UpdateCharacterState(){ // 默认更新逻辑... } } public class PlayerController : CharacterController { private float speed = 5f; // 自定义Start方法初始化玩家控制器 protected override void Start(){ base.Start(); // 执行父级的Start方法 // 添加额外设置 Debug.Log("Player controller initialized."); } // 修改UpdateCharacterState以适应玩家控制需求 protected override void UpdateCharacterState(){ Vector3 movementDirection = Input.GetAxis("Horizontal") * transform.right + Input.GetAxis("Vertical") * transform.forward; rb.velocity = movementDirection.normalized * speed; } } ``` 在这个实例中,`CharacterController` 是一个基础的角色控制器,它包含了通用的功能;而 `PlayerController` 则是从其派生出来的专门处理玩家输入并据此移动的游戏对象控制器。这里不仅展示了如何利用 `virtual` 和 `override` 来定制化不同种类游戏角色的动作模式,还体现了面向对象编程原则下良好的代码结构设计。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值