public class parentObj: MonoBehaviour
{
public string test;
void Start()
{
test = "테스트";
}
}
public class childrenObj: parentObj
{
void Start()
{
Debug.Log( test );
}
}
이런 식으로 해놨는데 부모 변수의 값을 그대로 가져오진 못하더라고요.
그러면 GetComponent<parentObj>().test 이런 식으로 가져오는게 맞는건가요?
해당 댓글은 삭제되었습니다.
this.test = test 이런 식으로 해야한다는건가요? 제대로 안나오는데..
https://m.blog.naver.com/PostView.nhn?blogId=myjet1490&logNo=221369594627&categoryNo=19&proxyReferer=https:%2F%2Fwww.google.com%2F
해당 댓글은 삭제되었습니다.
그런데 로그에 "테스트"라고 찍히질 않아서요
Debug.Log( "작동중 ? - " + test ); 이렇게 적었는데 test의 값은 안나오고 작동중? - 만 출력되는 상황입니다
제셍각엔 저거님 한파일에 작성하고 넣은거죠?
아뇨 2개의 오브젝트에 각각 parentObj, childrenObj로 .cs를 만들어서 붙여놨어요
음.. 제가 똑같이작성해서 보여드릴게여..
ㅠㅠ 감사합니다
아니근데 지금보니까 부모변수 초기화를 Start에서 하구있자늠
public string test = "테스트"; 로 부모 멤버변수 바꾸고 부모 Start 초기화문 날린뒤에 디버그 찍어보세여. 자식에서 부모 변수 접근 잘되는지
아 본문에는 start에서 했다고 적었는데 링크 주신거 따라하면서 처음에 선언도 해봤는데 결과는 같더라고요..
전잘데는데 저랑머가다른지 스크린샷올려드릴테니 비교해보셈
넵 감사합니다 부탁드리겠습니다
확인한거같아서 글삭했음
이렇게한번 테스트해보세여. 부모클래스에 Debug.Log("parentObj"); / 자식에 Debug.Log("childrenObj"); 이러면 아마 부모만 start문에 도는게 보일걸요? 이걸 파일을 분할해서 childrenObj.cs 파일에서 parentObj를 상속받은경우, 그냥 test 자체로도 값이 가져와지고 출력되는거 확인될껄여?
로그는 parentObj, childrenObj 둘 다 찍혀서 나오네요. 현재 parent 오브젝트에 parentObj.cs, children 오브젝트에 childrenObj.cs 이렇게 붙어있고 각각 start문에서 로그 찍은 상황입니다
https://gall.dcinside.com/mgallery/board/view/?id=game_dev&no=69547
한 오브젝트에다가 저 cs들을 같이 넣어놓으니까 되네요.. 부모 오브젝트 따로, 자식 오브젝트 따로 해서 넣어놓은 상태였거든요
unity Monobehaviour 내장 함수들 (Start , Awake, Update) 등은 가장 하위 클래스의 것만 실행시켜줌
부모의 Start가 있고 자식의 Start가 있으면 자식의 Start만 실행시켜준단 얘기임. 즉 이 상황에선 부모의 Start가 실행되지 않기 때문에 test변수가 할당되지않아서 기본 값 혹은 인스펙터에 있는 값이 찍힐거임 수정하려면 부모의 Start를 virtual로 선언하든 자식의 Start를 new로 선언해서 자식에서 base.Start 등으로 호출해오던가, 초기화하는 부분을 부모의 Start말고 다른곳에 넣던가 하면 될것임
엄밀히 말하면 가장 하위클래스의 것만 실행시켜주는 건 아니긴한데... 어쨋든 Start, Awake 등 쓰면서 상속받을땐 주의하셈~
감사합니다 이거도 문제였던거 같네요..