用途:
1、通过递增静态变量了解已创建此类的多少个对象,与C++构造计数类似
static关键字修饰的变量属于类,不属于对象(实例)
对象的生存期和static关键字
using UnityEngine;
using System.Collections;
public class Enemy
{
//静态变量是在类的所有实例之间
//共享的变量。
public static int enemyCount = 0;
public Enemy()
{
//通过递增静态变量了解
//已创建此类的多少个对象。
enemyCount++;
}
}
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;
}
}
2、static是共享(公交车)变量,静态变量是在类的所有实例(类对象)之间共享的变量
using UnityEngine;
using System.Collections;
public class Player : MonoBehaviour
{
//静态变量是在类的所有实例之间
//共享的变量。
public static int playerCount = 0;
void Start()
{
//通过递增静态变量了解
//已创建此类的多少个对象。
playerCount++;
}
}
3、可以在没有类对象的情况下调用静态方法。请注意,静态方法无法访问非静态成员变量。
using UnityEngine;
using System.Collections;
public static class Utilities
{
//可以在没有类对象的情况下调用
//静态方法。请注意,静态方法无法访问
//非静态成员变量。
public static int Add(int num1, int num2)
{
return num1 + num2;
}
}
4、和面向对象一样,通过类名.对象名访问静态方法
using UnityEngine;
using System.Collections;
public class UtilitiesExample : MonoBehaviour
{
void Start()
{
//可以使用类名和点运算符
//来访问静态方法。
int x = Utilities.Add (5, 6);
}
}
对比C++,改用::而不是.
int Point::count = 0;//静态数据成员定义和初始化,使用类名限定