멤버 함수의 클래스 변수에 액세스 할 수 없습니다.

상라 투라

Unity C # 스크립트에는 게임 변수가 저장된 싱글 톤 게임 컨트롤러 개체가 있지만 멤버 함수에서 액세스 할 때 이상한 동작이 발생합니다. 현재 값이 아닌 초기화 된 값을 인쇄합니다. 그러나 업데이트 기능에서는 각 프레임마다 올바른 값을 인쇄합니다. 아래에 수업을 요약했습니다. 컨트롤러 클래스에는 자체에 대한 정적 참조가 있습니다. 추가 세부 정보가 필요하면 요청할 수 있습니다. 저는 C # 및 Unity를 처음 사용하므로 명확한 답변이 부족할 수 있습니다.

감사

public class controller : MonoBehaviour {

    public int[] star = new int[64];

    void Start(){ /* calls another function to set 0 for each star index */ }

    void Update(){  // during gameplay star[0] gets a value of 1
        print(star[0]);  // prints correct value which is 1
    }

    public void checkValue(){
        print(star[0]); // prints 0 incorrectly which should be 1     
    }


}
군나르 B.

나는 약간의 예를 들었습니다. 버튼과 빈 게임 오브젝트를 만들었습니다 GameController. 이 코드를 다음에 추가했습니다 GameController.

using UnityEngine;
using System.Collections;

public class GameController : MonoBehaviour {

    public static GameController instance;

    [System.NonSerialized] public int[] star = new int[64];

    private void Awake()
    {
        if(instance == null)
            instance = this;
        else if(instance != this)
            Destroy(gameObject);

        DontDestroyOnLoad(gameObject);
    }

    private void Start()
    {
        StartCoroutine(SetAllTo(1));
    }

    // for simulating some changes during the game
    private IEnumerator SetAllTo(int value)
    {
        yield return new WaitForSeconds(2.0f);

        for(int i = 0; i < star.Length; i++)
            star[i] = value;

        Debug.Log("Setting done");
    }

    public void PrintFirst()
    {
        Debug.Log(star[0]);
    }
}

이제 OnClick버튼에 이벤트를 추가 하고 GameController게임 오브젝트를 슬롯으로 드래그 한 다음 PrintFirst.

게임을 시작하고 Coroutine 로그 이전에 한 번, 이후에 한 번 버튼을 클릭하면 콘솔이 다음을 제공합니다.

0
Setting Done
1

편집 : 이벤트에
대한 게임 오브젝트 는 장면에 있어야하며 자산 폴더의 프리 팹일 수 없습니다.OnClick

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

클래스의 벡터 멤버에 액세스 할 수 없습니다.

분류에서Dev

Jenkins Groovy (SharedLibrary) 클래스는 WorkflowScript 멤버에 액세스 할 수 없습니다.

분류에서Dev

다른 클래스 멤버 함수의 개인 멤버에 액세스 할 수있는 클래스 멤버 함수를 얻으려면 어떻게합니까?

분류에서Dev

클래스에 선언 된 개인 멤버에 액세스 할 수 없습니다 : 큐 클래스 템플릿

분류에서Dev

슈퍼 클래스의 멤버 함수가 서브 클래스의 멤버 함수에 액세스 할 수 있습니까? 그리고 어떻게?

분류에서Dev

친구 기능-멤버에 액세스 할 수 없습니다.

분류에서Dev

BaseClass의 shared_ptr을 사용하여 파생 클래스의 멤버에 액세스 할 수 없습니다.

분류에서Dev

클래스 변수에 액세스 할 수 없습니다.

분류에서Dev

친구 함수 및 네임 스페이스. 클래스의 개인 멤버에 액세스 할 수 없습니다.

분류에서Dev

다른 클래스에서 클래스의 멤버 변수에 액세스

분류에서Dev

스칼라 클래스의 공용 클래스 멤버는 Java 클래스에서 액세스 할 수 없습니다.

분류에서Dev

make_unique 클래스에 선언 된 개인 멤버에 액세스 할 수 없습니다.

분류에서Dev

오류 C2248 : 클래스에 선언 된 개인 멤버에 액세스 할 수 없습니다.

분류에서Dev

'Soldier'클래스에 선언 된 개인 멤버에 액세스 할 수 없습니다.

분류에서Dev

'Soldier'클래스에 선언 된 개인 멤버에 액세스 할 수 없습니다.

분류에서Dev

Razor보기 내에서 ViewModel 클래스 멤버에 액세스 할 수 없습니다.

분류에서Dev

클래스에 선언 된 개인 멤버에 액세스 할 수 없습니다.

분류에서Dev

boost :: thread_specific_ptr은 클래스에 선언 된 개인 멤버에 액세스 할 수 없습니다.

분류에서Dev

Lazarus Pascal-클래스 메서드는 개인 멤버에 액세스 할 수 없습니다.

분류에서Dev

다이아몬드의 std :: unique_ptr을 통해 가장 기본 클래스의 보호 된 멤버 변수에 액세스 할 수 없습니다.

분류에서Dev

C ++ 친구 클래스가 기본 클래스의 모든 멤버에 액세스 할 수 있습니까?

분류에서Dev

싱글 톤 클래스에서 액세스 할 수없는 개인 멤버

분류에서Dev

다른 클래스의 변수에 액세스 할 수 없습니다.

분류에서Dev

C ++의 클래스 내에서 개인 멤버에 액세스 할 수 없습니까?

분류에서Dev

클래스 java.beans.Beans는 수정자가 ""인 Perosn.PersonDAO 클래스의 멤버에 액세스 할 수 없습니다.

분류에서Dev

Union 내부의 익명 구조 멤버에 액세스 할 수 없습니다.

분류에서Dev

멤버 함수가 멤버 변수에 액세스하지 못하도록 제한 할 수 있습니까?

분류에서Dev

전역 함수에서 클래스 멤버에 액세스 할 수 있습니까?

분류에서Dev

클래스 개체가 자신의 개인 멤버에 액세스 할 수 없습니까?

Related 관련 기사

  1. 1

    클래스의 벡터 멤버에 액세스 할 수 없습니다.

  2. 2

    Jenkins Groovy (SharedLibrary) 클래스는 WorkflowScript 멤버에 액세스 할 수 없습니다.

  3. 3

    다른 클래스 멤버 함수의 개인 멤버에 액세스 할 수있는 클래스 멤버 함수를 얻으려면 어떻게합니까?

  4. 4

    클래스에 선언 된 개인 멤버에 액세스 할 수 없습니다 : 큐 클래스 템플릿

  5. 5

    슈퍼 클래스의 멤버 함수가 서브 클래스의 멤버 함수에 액세스 할 수 있습니까? 그리고 어떻게?

  6. 6

    친구 기능-멤버에 액세스 할 수 없습니다.

  7. 7

    BaseClass의 shared_ptr을 사용하여 파생 클래스의 멤버에 액세스 할 수 없습니다.

  8. 8

    클래스 변수에 액세스 할 수 없습니다.

  9. 9

    친구 함수 및 네임 스페이스. 클래스의 개인 멤버에 액세스 할 수 없습니다.

  10. 10

    다른 클래스에서 클래스의 멤버 변수에 액세스

  11. 11

    스칼라 클래스의 공용 클래스 멤버는 Java 클래스에서 액세스 할 수 없습니다.

  12. 12

    make_unique 클래스에 선언 된 개인 멤버에 액세스 할 수 없습니다.

  13. 13

    오류 C2248 : 클래스에 선언 된 개인 멤버에 액세스 할 수 없습니다.

  14. 14

    'Soldier'클래스에 선언 된 개인 멤버에 액세스 할 수 없습니다.

  15. 15

    'Soldier'클래스에 선언 된 개인 멤버에 액세스 할 수 없습니다.

  16. 16

    Razor보기 내에서 ViewModel 클래스 멤버에 액세스 할 수 없습니다.

  17. 17

    클래스에 선언 된 개인 멤버에 액세스 할 수 없습니다.

  18. 18

    boost :: thread_specific_ptr은 클래스에 선언 된 개인 멤버에 액세스 할 수 없습니다.

  19. 19

    Lazarus Pascal-클래스 메서드는 개인 멤버에 액세스 할 수 없습니다.

  20. 20

    다이아몬드의 std :: unique_ptr을 통해 가장 기본 클래스의 보호 된 멤버 변수에 액세스 할 수 없습니다.

  21. 21

    C ++ 친구 클래스가 기본 클래스의 모든 멤버에 액세스 할 수 있습니까?

  22. 22

    싱글 톤 클래스에서 액세스 할 수없는 개인 멤버

  23. 23

    다른 클래스의 변수에 액세스 할 수 없습니다.

  24. 24

    C ++의 클래스 내에서 개인 멤버에 액세스 할 수 없습니까?

  25. 25

    클래스 java.beans.Beans는 수정자가 ""인 Perosn.PersonDAO 클래스의 멤버에 액세스 할 수 없습니다.

  26. 26

    Union 내부의 익명 구조 멤버에 액세스 할 수 없습니다.

  27. 27

    멤버 함수가 멤버 변수에 액세스하지 못하도록 제한 할 수 있습니까?

  28. 28

    전역 함수에서 클래스 멤버에 액세스 할 수 있습니까?

  29. 29

    클래스 개체가 자신의 개인 멤버에 액세스 할 수 없습니까?

뜨겁다태그

보관