C# 静态类 静态变量 静态方法 在Unity中的使用

本文介绍了Unity中静态类的使用,强调了静态类内的变量和方法必须为静态,并通过实例说明了静态变量如何在场景切换时保持其值。此外,还探讨了静态变量在跨场景传值和与单例模式结合的应用。文章提供了一个静态类ScoreLogic的示例,用于存储和管理游戏得分。
摘要由CSDN通过智能技术生成

疑问:

   Q1、静态类里的变量和方法,都必须是静态的吗?
   Q2、普通类里的静态变量,与普通变量相比,有什么特别之处?

解答:

   A1、静态类里的变量和方法,都必须是静态的。静态方法里的变量,也必须是静态的。
     eg:静态类里有普通方法报错
描述什么
在这里插入图片描述
   A2、普通类里有两个变量,一个是静态的,一个是普通的。Unity里有两个场景A和B,可以由场景A跳转到场景B,A和B中都有这个普通类脚本——普通变量,在跳转场景后,恢复初始值;静态变量,保留上个场景中的值。静态变量的这一特性,常和单例模式配合,用于跨场景传值
在这里插入图片描述

静态类在Unity中的应用举例:

   项目如果有多个场景,它们需要用到,同一个变量——可以把此变量写成静态变量,放到静态类中
(脚本不继承自MonoBehaviour父类,就不必加到层级视图的游戏物体上——变量直接用类名调用即可)
下面是我Unity中,统分环节的一个静态类

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public static class ScoreLogic 
{
    //第4部分,各题分数 变量
    public static int score4_01;
    public static int score4_02;
    public static int score4_03;
    public static int score4_04;
    public static int score4_05;
    public static int score4_06;
    public static int score4_07;
    public static int score4_08;
    public static int score4_09;
    public static int score4_10;
    public static int score4_11;
   
}
  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C# 实现单例模式有多种方式,其一种常见的方式是使用静态变量。下面是一个在 Unity 使用 C# 实现单例的示例代码: ```csharp public class MySingleton : MonoBehaviour { private static MySingleton instance; public static MySingleton Instance { get { if (instance == null) { instance = FindObjectOfType<MySingleton>(); if (instance == null) { GameObject go = new GameObject(); go.name = "MySingleton"; instance = go.AddComponent<MySingleton>(); DontDestroyOnLoad(go); } } return instance; } } private void Awake() { if (instance == null) { instance = this; DontDestroyOnLoad(gameObject); } else { Destroy(gameObject); } } } ``` 这个示例,我们在类定义了一个静态变量 instance,用于存储单例对象。在 Instance 属性,我们首先检查 instance 是否为 null,如果是,就通过 FindObjectOfType 方法查找场景是否已经存在 MySingleton 实例,如果存在就直接赋值 instance,否则就创建一个新的 GameObject,并添加一个 MySingleton 组件,再将其赋值给 instance。最后,我们返回 instance。 在 Awake 方法,我们再次检查 instance 是否为 null,如果是,就将当前实例赋值给 instance,并调用 DontDestroyOnLoad 方法,以便在场景切换时不被销毁。如果 instance 不为 null,说明已经存在 MySingleton 实例了,我们就销毁当前实例。 使用时,我们可以通过 MySingleton.Instance 来获取单例对象。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值