//改进:点按和长按空格,起跳的速度不一样 //通过刚体当前的速度来判断是在上升还是在下落,给刚体不同的重力大小 public class JumpTest : MonoBehaviour { public float jumpForce = 5f; public float fallMultiplier = 2.5f; public float lowJumpMultiplier = 2f;
//改进:增加角色与环境的碰撞检测,解决角色可以在空中无限跳跃的问题 public class JumpBox : MonoBehaviour { [Range(0, 10)] public float jumpForce = 5f; public LayerMask mask; public float boxHeight = 0.5f;
//Inventory.cs 一个用于管理item的类 public class Inventory : MonoBehaviour { //Stuff是Inventory的子类 public class Stuff { //子类中的变量 public int projectileA; public int projectileB; public int projectileC; public float fuel;
//构造函数 public Stuff(int prA, int prB, int prC) { projectileA = prA; projectileB = prB; projectileC = prC; } //构造函数 public Stuff(int prA, float fu) { projectileA = prA; fuel = fu; } //使用构造函数创建类的实例 public Stuff myStuff = new Stuff(1,2,3); public Stuff myOtherStuff = new Stuff(1, 5.0);
//Player.cs 我们希望能通过其他脚本使用玩家的经验值 public class Player { private int experience; //声明字段(field)
//属性的名称推荐以大写字母开头,内部含有set和get两个访问器(accessor) public int Experience { get { //返回所封装的字段,当get不存在时,experience为write only return experience; } set { //通过关键字value给字段赋值,当set不存在时,experience为readonly experience = value; } }
public int Level { //使用set访问器启动协同程序?? get { return experience/1000; } set { experience = value * 1000; } }
//简写 public int Health {get; set;} }
1 2 3 4 5 6 7 8 9 10 11
//Game.cs 通过属性Experience来访问字段experience public class Game : MonoBehaviour { void Start() { Player myPlayer = new Player();
myPlayer.Experience = 5; int x = myPlayer.Experience; } }
//SomeClass.cs public class SomeClass { //<T>是泛型参数,after the methods name or before the normal parameters //可以代表任意类型 //前面的T叫做方法的返回类型(return type),后面的T叫做方法的参数类型(arguement type) public T GenericMethod<T>(T param) { return param; } }
1 2 3 4 5 6 7 8 9 10
//SomeOtherClass.cs 用于使用上面创建的泛型方法 public class SomeOtherClass : MonoBehaviour { void Start() { SomeClass myClass = new SomeClass();
myClass.GenericMethod<int>(5); } }
1 2 3 4 5 6 7 8 9 10 11
//GenericClass.cs this class uses a generic type of T public class GenericClass<T> { //类型为T的成员变量 T item; // public void UpdateItem(T newItem) { item = newItem; } }
1 2 3 4 5 6 7 8 9 10
//GenericClassExample.cs 实例化上面的类 public class GenericClassExample : MonoBehaviour { void Start() { //为T指定一个类型并实例化 GenericClass<int> myClass = new GenericClass<int>(); myClass.UpdateItem(5); } }
列表
列表List类似一个动态数组,也是一个泛型类。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
//创建一个名为ages的List,当按空格时随机生成一个年龄,当按Q时随机删除一个
public class ListExample : MonoBehaviour { public List<int> ages = new List<int>();