📜  Unity范围和访问修饰符(1)

📅  最后修改于: 2023-12-03 14:48:13.272000             🧑  作者: Mango

Unity范围和访问修饰符

在Unity中,范围和访问修饰符是用于控制类、函数、变量和属性的访问权限的。在本篇介绍中,我们将深入了解这些修饰符的用途和实际应用。Unity中常见的访问修饰符有public、private和protected,范围修饰符有static和const。

访问修饰符
public

public修饰符是最常用的访问修饰符之一,它用于指定该类、函数、变量或属性可以被所有的其他对象访问。在Unity引擎中,所有的类都必须是public才能被其他脚本访问到。此外,在Unity中,还有许多组件(例如Transform组件、Rigidbody组件等)都是公共的。

private

private修饰符用于指定该类、函数、变量或属性只能在其声明的类中被访问。也就是说,只有在声明该类的代码块内部,才能访问该类的私有成员。

public class TestClass
{
    private int privateVar = 10;
    public int publicVar = 20;
 
    public void PrintValues()
    {
        Debug.Log("privateVar: " + privateVar);
        Debug.Log("publicVar: " + publicVar);
    }
}
protected

protected修饰符用于指定该类、函数、变量或属性只能在其声明的类以及其子类中访问。也就是说,只有在声明该类的代码块及子类的代码块内部,才能访问该类的受保护成员。

public class BaseClass
{
    protected int protectedVar = 15;
}
 
public class DerivedClass : BaseClass
{
    public void PrintValue()
    {
        Debug.Log("protectedVar: " + protectedVar);
    }
}

在上面的代码中,DerivedClass是BaseClass的子类,它可以访问BaseClass中的受保护成员protectedVar。

范围修饰符
static

static修饰符用于指定该类、函数、变量或属性与类的实例无关。也就是说,static修饰符表示该成员是类级别的,而不是实例级别的。

public class TestClass
{
    public static int staticVar = 10;
    public int instanceVar = 20;
}
 
public class Test
{
    static void Main()
    {
        Debug.Log("staticVar: " + TestClass.staticVar);
        TestClass obj = new TestClass();
        Debug.Log("instanceVar: " + obj.instanceVar);
    }
}

在上面的代码中,TestClass中的staticVar是静态成员,可以直接通过类名访问。但是,instanceVar是实例成员,需要创建TestClass的实例才能访问。

const

const修饰符用于指定该变量是一个常量。也就是说,一旦声明了该变量的值,就不能在程序的任何其他地方更改该值。

public class TestClass
{
    public const int constVar = 10;
    public int instanceVar = 20;
}
 
public class Test
{
    static void Main()
    {
        Debug.Log("constVar: " + TestClass.constVar);
        TestClass obj = new TestClass();
        Debug.Log("instanceVar: " + obj.instanceVar);
    }
}

在上面的代码中,constVar是常量,它的值被固定为10,而不能更改。但是,instanceVar是实例变量,可以在创建实例后进行更改。

总结

通过本篇介绍,我们了解了Unity中的访问修饰符和范围修饰符的作用和使用方法。这些修饰符可以帮助我们控制代码的可见性和访问权限,使我们的代码更加易于维护和扩展。