前言
先前我们已经学习了成员变量以及成员属性。
静态成员对于在整个应用程序中共享数据和功能非常有用。它们可以用于跟踪全局状态、共享常量和实现单例模式等。但是需要注意的是,过度使用静态成员可能导致代码变得难以维护和测试,因此应谨慎使用。其中单例模式是unity开发中一种经常使用的模式,方便我们对方法的调用和管理。
既然有了静态成员,就会有静态类和静态构造函数,这里博主准备将静态类和静态构造函数单独作为的一个单独的板块进行讲解。
那就开始进行今天的讲解。
基本概念
静态关键词 static
用static修饰的成员变量,方法属性,等都称为静态成员
特点:直接用类名点出使用
定义和使用
实例
class Test
{
static public float Pi=3.1415926f;//定义一个静态的变量
public int testInt=100;
public static float Circle(float r)//定义一个静态的函数
{
return Pi*r*r;
}
}
使用
public class Program
{
public static void Main(string[] args)
{
Test test1 = new Test();
Console.WriteLine(Test.Pi);
Console.WriteLine(Test.Circle(3));
Console.WriteLine(test1.testInt);
}
}
特点
- 程序开始运行时,就会分配内存空间,所以程序开始我们就能直接点出来使用,它与程序同生共死,只有程序结束内存才会被释放
注意事项
- 静态函数中不能使用非静态成员变量
- 非静态函数可以使用静态成员变量
作用
-
常用的唯一量
-
方便使用(不用申明对象就可以使用)
-
静态方法一般是常用的唯一的方法申明
常量与静态变量
const可以理解为特殊的static
相同点:都可以通过类名直接点出来使用
不同点:
- const必须初始化,不能修改
- const只能修饰变量
- const一定是写在访问修饰符的后面
场景实例
这是一个游戏管理器,我们可以看到,他更多的其实就是发挥一个工具的作用,负责管理游戏内的人数。你可以就着这个例子进行一定修改,比如,连入服务器和退出服务器才进行人数修改,当然这肯定涉及到服务器相关的搭建,基础不好的同学可以换一个尝试,仿造博主的例子写一个血量管理器,要求能在受伤的时候扣血,然后血量清零了就打印死亡。
以下的例子我想能帮助你理解静态变量的作用。
using System;
public class GameManager
{
public const int MAX_PLAYERS = 4;
public static int numberOfPlayers = 0;
public static void StartGame()
{
Console.WriteLine("Game started!");
Console.WriteLine("Max players: " + MAX_PLAYERS);
Console.WriteLine("Number of players: " + numberOfPlayers);
}
public static int ChangePlayerNum(int number)
{
if (numberOfPlayers+1 <=MAX_PLAYERS&&numberOfPlayers-1>=0) { return numberOfPlayers+=number; }
else
{
Console.WriteLine("不能执行操作");
return numberOfPlayers;
}
}
}
public class Program
{
public static void Main(string[] args)
{
GameManager.StartGame();
GameManager.ChangePlayerNum(1);
Console.WriteLine("Number of players: " + GameManager.numberOfPlayers);
}
}
总结
静态成员的第一节到这里就讲完了,不要觉得很简单,这一块在unity的开发中使用是非常频繁的,不仅仅是我上述所说的游戏人数游戏血量,有时候有些大量的逻辑数据集中管理也会使用到:比如一个平台跳跃游戏中,可能你需要管理一张地图里的平台数据,那么你也需要一个这样的工具类,静态成员的使用就会很频繁了。
还是那句话,脚踏实地,一步一个脚印,才能写出你想要的游戏。
请期待我的下一篇博客。
我来自佑梦游戏开发,感谢你的订阅和关注!