Django Girls and Boys 備忘録

Python、Selenium、Django、java、iPhoneアプリ、Excelマクロなどで気付いたこと、覚えておきたいことなどを載せていきます。

【Unity】「'XXX' is inaccessible due to its protection level」というエラーが表示された場合の対処方法


他のクラスやメソッドにアクセスしようと思った時に、アクセスする側とされる側を一通り作成していざ実行しようとしたらこのようなエラーが出ることがあります。

 

いくつか原因はあるようですが、最も簡易な原因としては、publicのつけ忘れというものです。

 

 

 

1.対処方法例

 

たとえば、アクセスされる側が以下のようになっており、

 

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

public class B_Class : MonoBehaviour
{
    //他からアクセスする場合この宣言に問題あり
    static void B_Func()
    {
      :
: } }

 

 

アクセスする側がこのようにアクセスすると、表題のようなエラーが発生します。

 

 

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

using UnityEngine;
public class A_Class : MonoBehaviour
{
    void Start()
    {
        B_Class.B_Func();
    }
}

 

この場合、アクセスされる側にpublicを追加して、

 

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

public class B_Class : MonoBehaviour
{
    // publicを追加
    public static void B_Func()
    {
      :
: } }

 

のようにすればエラーは解消されます。

 

以上が、「'XXX' is inaccessible due to its protection level」というエラーが表示された場合の対処方法の簡易な例になります。