(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)全部内容,收藏起来下次访问不迷路!