继承
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Paladin : Character
{
public Paladin(string name):base(name){
}
}
当一个继承自另一个类时,父类的成员变量向下汇入它的任何派生子类,形成类似金字塔形状。通过这个逻辑直接调用父类构造函数
Public ChildClass : ParentClass
{
Public ChildClass():base()
{
}
}
Paladin Knight= new Paladin("Sir Athur");
Knight.PrintStatsInfo();
可以通过调用子类直接调用父类的函数
组合
子类也可以继承父类里定义的变量
父类:
public struct Weapon
{
public string name;
public int damage;
public Weapon(string name, int damage)
{
this.name = name;
this.damage = damage;
}
子类:
public new Weapon Weapon;
public Paladin(string name,Weapon Weapon):base(name)
{
this.Weapon=Weapon;
}
不写new会warning但是问题不大,不是报错
Virtual和override
- virtual 关键字用于在基类中声明一个方法,表示该方法可以在派生类中被重写。使用 virtual 关键字修饰的方法允许派生类对其进行更改或扩展。
- override 关键字用于在派生类中重写基类中以 virtual 关键字声明的方法。通过使用 override 关键字,派生类可以提供对基类方法的新实现。
在父类里写:
public virtual void PrintStatsInfo(){
Debug.LogFormat("Hero:{0}-{1}Exp",name,exp);
}
可以让子类重写父类的信息
在子类里写:
public override void PrintStatsInfo()
{
Debug.LogFormat("Hail {0}-take up your {1}", name, Weapon.name);
}
对象是类的行为
在面向对象编程中,类是用来创建对象的蓝图或模板。一个类定义了对象的属性(数据)和方法(行为)。对象是类的实例化,它具体化了类定义的属性和方法。
行为是指对象可以执行的操作或具有的功能。类的行为是通过其方法来定义的。方法是类中的函数,它们封装了一组相关的操作。通过调用对象的方法,我们可以让对象执行相应的操作。
例如,考虑一个名为"Animal"的类,它具有属性(如名称、年龄)和方法(如移动、发出声音)。当我们创建一个"Animal"类的对象,比如一只猫,该对象就具有了类中定义的属性和方法。我们可以调用这个猫对象的移动方法,使其移动;或者调用发出声音的方法,使其发出声音。
通过类和对象的抽象和封装,我们可以将代码组织成更具可读性、可维护性和可扩展性的结构。类定义了对象的共同特征和行为,而对象具体化了类的定义并具备了类的行为。
void Start()
{
camTransform=this.GetComponent<Transform>();
Debug.Log(camTransform.localPosition);
}
这段代码的作用是获取当前 GameObject 的 Transform 组件,并将其赋值给 camTransform 变量。然后,它通过调用 Debug.Log 方法来输出 camTransform.localPosition 属性的值。
localPosition 是 Transform 组件的一个属性,用于表示该对象相对于父对象的位置。如果该对象没有父对象,则 localPosition 就表示它在世界坐标系中的位置。
因此,该代码可以用来定位当前 GameObject 在场景中的位置。执行 Start 方法时,会将当前 GameObject 的 Transform 组件的 localPosition 输出到 Unity 控制台上,以供开发者查看。