【Unity3D】在Inspector面板中显示变量和类

一、前言

Unity有一个强大的特性,它可以帮助我们在没有任何编程的情况下修改Inspector面板中的值。本文介绍了我们需要知道的所有信息,以便在Unity Inspector面板中显示我们的变量和自定义类。

二、显示变量

变量
让我们创建一个名为“Test.cs”的C#脚本,其中包含一个int变量:

using UnityEngine;
using System.Collections;

public class Test : MonoBehaviour {
    int something = 0;

    // Use this for initialization
    void Start () {
        
    }
        
    // Update is called once per frame
    void Update () {
        
    }
}

现在我们通过顶部菜单创建一个新的GameObject(游戏对象->创建空)并将Test.cs脚本添加到GameObject。Inspector面板现在看上去是这样的:
在这里插入图片描述
我们可以看到它上面有Test.cs脚本,但是我们没有看到某物一点变数都没有。

公共变量
让我们通过添加另一个变量来修改我们的脚本,但是这次用public前缀。在编程语言中,public意味着其他类也可以看到这个值。在Unity public中,也意味着变量显示在Inspector面板中。

修改后的Test.cs脚本:

using UnityEngine;
using System.Collections;

public class Test : MonoBehaviour {
    int something = 0;
    public int i_am_public = 0;

    // Use this for initialization
    void Start () {
        
    }
        
    // Update is called once per frame
    void Update () {
        
    }
}

保存了它之后,下面是Inspector面板现在的样子:
在这里插入图片描述
现在,我们可以轻松地修改变量,而无需再次打开脚本,也无需进行任何编程。

三、显示类

公共类+变量

我们的测试脚本现在应该有一个Address变量。假设我们也可以在其他脚本中使用一个Address,我们就可以为它创建一个完整的类。让我们开始吧:

using UnityEngine;
using System.Collections;

public class Test : MonoBehaviour {
    int something = 0;
    public int i_am_public = 0;
    
    public Address address;

    // Use this for initialization
    void Start () {
        
    }
        
    // Update is called once per frame
    void Update () {
        
    }
}

public class Address {
    public string country = "";
    public string city = "";
    public string street = "";
    public int number = 0;
}

现在,如果我们再次保存并查看Inspector面板,下面是我们所看到的:
在这里插入图片描述
即使我们设置了Address公众变量在我们的考试课上,我们仍然看不到它。原因是它不是像“public class Test:MonoBehaviour”那样的Unity类(每个组件都需要:MonoBehaviour,但一个简单的类没有理由是:MonoBehaviour).

大多数人在这里停下来,认为不可能在Inspector面板显示我们的Address,但实际上是这样。

类显示在Inspector面板中
诀窍是:如果一个类应该显示在Inspector面板中,我们只需通过编写[System.erialable]在类声明之上

下面是我们修改的脚本:

using UnityEngine;
using System.Collections;

public class Test : MonoBehaviour {
    int something = 0;
    public int i_am_public = 0;
    
    public Address address;

    // Use this for initialization
    void Start () {
        
    }
        
    // Update is called once per frame
    void Update () {
        
    }
}

[System.Serializable]
public class Address {
    public string country = "";
    public string city = "";
    public string street = "";
    public int number = 0;
}

现在,如果我们保存它并再次查看Inspector面板,这就是我们得到的:
在这里插入图片描述
就这么简单!

恬静的小魔龙 CSDN认证博客专家 CSDN博客专家
博主从2017年9月开始在CSDN写博客,于2019年8月成为博客专家,比起那些4个月就成为博客专家的确实水平差了点,但是本来写博客也是为了对学习的东西的记录,慢慢的写出来的东西能帮助更多的人,也慢慢的提升了自己的水平。想起来一个例子:1.01^365=37.8,1.02^365=1377.4,每天进步一点点,一年后就差了几十倍的差距,加油吧少年。
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页
实付 19.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值