由于其保护级别而无法访问该结构

时间:2018-11-18 16:13:31

标签: c# class unity3d struct

我在一个类中声明了一个私有结构。

当我尝试使用它时,编译器会引发错误

struct inaccessible due to its protection level

这是C#代码:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;

public class HUDanimator : MonoBehaviour
{
    private struct udtThis
    {
        Color col1;
        Color col2;
        float wait;
        float fade;
    }

    private udtThis[] m = new udtThis[2];

    void Start()
    {
        udtThis n; //raises the compiler error
        n.wait = 0f; 

我在这里做什么错了?

谢谢。

2 个答案:

答案 0 :(得分:3)

您可以在结构publicinternal中创建属性,然后以常规方式访问它们。

我建议像这样封装它们:

    public Color Col1 { get; set; }
    public Color Col2 { get; set; }
    public float Wait { get; set; }
    public float Fade { get; set; }

答案 1 :(得分:3)

您的编译器很可能在n.wait = 0f;行抱怨,因为该结构的字段是私有的。将其公开:

private struct udtThis
{
    public Color col1;
    public Color col2;
    public float wait;
    float fade;
}

然后您的代码示例就可以正常编译。