버그 해결을 위한 모든 질문을 던져
0 votes
231 views

우선소스는

public class SetColor : MonoBehaviour
{
    public GameObject ColorCube;
    public MeshRenderer obj;
    public Material Color1;

    Transform GGG;
   
    void Start()
    {
        CreateCube();
        obj = GetComponent<MeshRenderer>();
    }

    void Update()
    {

        if (Input.GetKeyDown(KeyCode.Space))
            obj.material = Color1;
    }

    void CreateCube()
    {
        for(int x=0; x<1; x++)
        {
            GameObject create = Instantiate(ColorCube, GGG, false);
            create.transform.localPosition = new Vector3(2, 2, 2);
        }
    }
}

image

 

설명드리자면

 

GameObject ColorCube 가 CreateCube() 함수에의해 생겨나는 큐브인데요

우선 생성은 됩니다 (2,2,2) 지점에서

문제는 사진과 같이 obj 칸이 None 이라는겁니다

원래는 제가 그 칸에다가 ColorCube를 넣었는데

안되더라고요 중복이라서 그런가 ?

 

코드를 해석하면

2,2,2 지점에서 큐브를 한개 생성하고

스페이스바를 누르면 생성된 큐브의 색깔이 Color4로 바뀌는 소스인데

 

뭐가 문제일까요 ? 허허 ,, 도와주세요 ;; 고인물분들 ,,

asked (2 point) , 231 views

1 답변

0 votes
이미지 안나와요.

1. CreateCube 를 통해서 생성하신 게임오브젝트는 GGG 라는 Trasform 을 컴포넌트로 가지고 있는 Gameobject 의 자식 GameObject

2. [obj = GetComponent<MeshRenderer>(); ] 에서 GetComponent 하신건 SetColor  컴포넌트를 갖고있는 GameObject(아마도 GGG Transform 을 가지고 있는 GameObject인 상태겠죠?)

이유 : MeshRenderer 컴포넌트는 자식이 가지고 있는데 부모한테서 찾으니 없는것입니다.

해결책 : obj = GetComponentInChildren<MeshRenderer>(); 로 수정. 하시면 됩니다.
answered (4 point)
NullReferenceException: Object reference not set to an instance of an object
SetColor.Update () (at Assets/Script/SetColor.cs:23)

고친 후 이렇게 뜨네요

 

cs23 이라하면

 obj.material = Color1;  <-- 이부분입니다 !

 

뭐가 문제일까요 이번엔 ㄷㄷ ;
그리고 SetColor 가 컴포넌트인가요 ??

 

저는 스크립트명으로 지정했는데

 

원래 SetColor 라는놈이 있나요 ??
정말 죄송합니다 ㅜㅜ 이해가 잘 안가서요

 

자식 컴포넌트를 사용해야되니깐 InChiledren 쓰셧는데

누가 부모고 누가 자식인거죠 ?? 아직 상속관계는 제가 지정안한걸로 알고있는데 ㅠㅠ

버그 해결을 위해 도움을 구하고, 도움을 주세요. 우리는 그렇게 발전합니다.

throw bug 는 프로그래밍에 대한 전분야를 다룹니다. 질문,논의거리,팁,정보공유 모든 것이 가능합니다. 프로그래밍과 관련이 없는 내용은 환영받지 못합니다.

170 질문
273 answers
292 댓글
285 users