当前位置:首页 > 阅读 > (Unity学习笔记)Statics

(Unity学习笔记)Statics

(Unity学习笔记)Statics

静态成员,例如变量和方法,是跨类的所有实例共享的成员。此外,静态成员可直接通过类访问,无需先对类的对象进行实例化。通常,成员变量对于类的每个对象是唯一的。虽然类的每个对象具有相同的变量,但它们各有自己的值。然而,对于静态变量,类的每个对象具有相同的变量和相同的值。因此,如果在一处更改某个静态变量的值,则其他所有静态变量的值也将更改。

与静态变量一样,静态方法属于类,而不属于类的特定对象。

Input.GetKeyDown就是静态方法,因为它不需要实例化对象。

不能在静态方法内部使用非静态类成员变量。静态方法属于类,非静态变量属于类的实例。

也可以整个类变为静态,这时不能创建类的实例。

2. 脚本示例

Enemy

using UnityEngine;

using System.Collections;

public class Enemy

{

//静态变量是在类的所有实例之间

//共享的变量。

public static int enemyCount = 0;

public Enemy()

{

//通过递增静态变量了解

//已创建此类的多少个对象。

enemyCount++;

}

}

Game

using UnityEngine;

using System.Collections;

public class Game

{

void Start ()

{

Enemy enemy1 = new Enemy();

Enemy enemy2 = new Enemy();

Enemy enemy3 = new Enemy();

//可以使用类名和点运算符

//来访问静态变量。

int x = Enemy.enemyCount;

}

}

Player

using UnityEngine;

using System.Collections;

public class Player : MonoBehaviour

{

//静态变量是在类的所有实例之间

//共享的变量。

public static int playerCount = 0;

void Start()

{

//通过递增静态变量了解

//已创建此类的多少个对象。

playerCount++;

}

}

PlayerManager

using UnityEngine;

using System.Collections;

public class PlayerManager : MonoBehaviour

{

void Start()

{

//可以使用类名和点运算符

//来访问静态变量。

int x = Player.playerCount;

}

}

Utilities

using UnityEngine;

using System.Collections;

public static class Utilities

{

//可以在没有类对象的情况下调用

//静态方法。请注意,静态方法无法访问

//非静态成员变量。

public static int Add(int num1, int num2)

{

return num1 + num2;

}

}

UtilitiesExample

using UnityEngine;

using System.Collections;

public class UtilitiesExample : MonoBehaviour

{

void Start()

{

//可以使用类名和点运算符

//来访问静态方法。

int x = Utilities.Add (5, 6);

}

}

以上就是((Unity学习笔记)Statics)全部内容,收藏起来下次访问不迷路!

86%的人还看了:达芬奇十大诡异的画