해결된 질문
작성
·
4.8K
2
public 로 선언되어 초기값이 있는 전역변수 를 스크립트에서 새로 생성하고
Inspector 에서 확인해보면 초기값이 0으로 표기되는 현상이 있었습니다.
이건 유니티의 '인스펙터에 값이 있으면 그 값이 스크립트창에서 초기화한 값보다 우선적용 됨'
인한 형상 입니다.
이걸 몰랐던 저는 코인 추가 관련 장에서 나와 저는 엄청 고생했습니다.
AsteroidScript 에서
기존 Speed 등 Inspector 에서 값을 수정등을 하고(스크립트에서 다시 변경 해도 Inspector에서 변경된 값은 변하지 않음..ㅠㅠ)
새로 스크립트에서 public float fCoin = 2f; 와같이 생성을 했지만
Inspector 에서는 변수의 값이 0으로 보여집니다.
EnemyScript 에서는 coin 값을 Start 함수에서 다시 값을 변경하여 대입하기에 문제가 없었습니다.
(테스트로 start함수에서 대입 안하고 전역변수에서 초기화 시 위와 같은 증상 발생)
이 문제는 Inspector 해당 컴포넌트 오른쪽 상단 Reset 버튼으로 해결 가능 합니다.
(대신 오브젝트 등 은 다시 끌어다 옴겨놔야 하는 번거로움이 있습니다..)
아니면 Start 함수에서 다시 초기화를 시켜주거나,
다른곳에서 참조하지 않는 변수라면, 게임 화면에서 값을 수정후 그값을 public 없이 스크립트에서 적용시켜주시면 됩니다.
확실히 좋은 방법이긴 합니다만 직접 해보니 그 코드를 지우고 컴파일할 때 그 변수를 사용한 코드를 주석처리하거나 따로 처리하지 않으면 null오류로 인해 컴파일이 진행되지 않아 일일히 처리를 해야 하는 번거로움이 있었습니다.
두 방법 모두 알아두고 상황에 맞게 쓰면 좋을 것 같네요 b