public Vector3[] playerMovePosition;
private void Start()
{
playerMovePosition = null;
playerMovePosition = new Vector3[1];
playerMovePosition[0] = new Vector3(1,1,1);
}
public void Update()
{
//플레이어 이동 로직
if(playerMovePosition != null)
{
Debug.Log("움직임실행");
Move();
}
public void Move()
{
playerMovePosition = new Vector3[0];
//혹은
playerMovePosition = null;
//로 널처리
}
이건 간단한 예시 코드
playerMovePosition을 null처리 했고 인게임 오브젝트에서도 null처리가 되었는데
업데이트문으로 Move()가 한 번 돈 후에
디버그("움직임실행")이 계속 돌아가더라구요...
싀밤 널처리 했는데 왜 돌아가죠?
이게 그 fake null 어쩌구 인가요?
playerMovePosition에다가 할당해놓고 왜 null이냐고 물어보면 어떻해...
playerMovePosition = new Vector3[0]; 이거 말씀하신거면 저게 널처리 인데용... playerMovePosition = null;랑 똑같아요
둘다 차피 똑같이 동작해요 ㅠ
혹시나 내가 잘못알고있나 해서 테스트해봤는데 길이가 0인 배열을 집어넣어도 null이라고 처리하지않음... 둘이 다른거라고 봐야됨
슈밤 진짜네요? 근데 playerMovePosition = null; 했을때도 똑같이 if문이 도는데 저싀발럼은 왜저러는 걸까요 ㅠㅠ
일단 제 지식 하나를 추가해주셔서 감사합니다
그러네? 저건 저럴 이유가 없는데? 다른코드에서 개입한게 있다면 몰라
일단 저것 자체에서 돌아갈 이유는 없나보네요. 유니테스크로 돌리고있는데 놓친게 있나봐요. 다시 꼼꼼히 확인해야겠네요. 알려주셔서 감사합니다!! ^^7
https://learn.microsoft.com/ko-kr/dotnet/csharp/language-reference/builtin-types/default-values
기본값이
0입니다. NULL이 아니라. If문을 0으로 수정하셔야 합니다.
어레이를 초기화하지 않고, 어레이를 참고하려고 하시면 아마 어레이 자체에서 null 오류가 뜨지는 않을 겁니다. 어레이의 길이가 0이라서, 어레이의 길이가 문제가 있다는 오류가 뜰 겁니다. 어레이를 사용하면서 null 오류를 만나려면, 어레이를 만들어놓고, 해당 자리에 아무 것도 넣지 않을 때 나타날 겁니다.
0으로 수정하라는 게 = 0말고, .length = 0 입니다.
아 맞네요 아예 0으로 설정하면 더 쉬웠네요... 항상 등잔밑이 어둡다니까유 ㅠㅠㅠ 덕분에 잘 해결할 것 같습니다 감사합니다~!
쿨찐새끼 답글 꼬라지 어질어질하네