버그 해결을 위한 모든 질문을 던져
0 votes
252 views
MeshRenderer mesh;
    Material mat;
    void Start()
    {
        mesh = GetComponent<MeshRenderer>();   
        mat = mesh.material;     //  ??????????????????
    }
    
    private void OnCollisionEnter(Collision collision)
    {
        if(collision.gameObject.name == "Sphere 1")
     
        mat.color = new Color(1, 1, 1); //흰색 검은색은(0, 0, 0)
    }

 

위의 코드는 object끼리 충돌했을때 객체의 색을 바꿔주는 코드입니다.

MeshRender 클래스의 객체를 Material로 전달해주는 부분이 이해가되지 않습니다.

제가 여태까지 c++만 해서그런데 ' = ' 기호는 참조가 아니지 않습니까??

mat = mesh.material 이 후 material 객체에 변화를 주게되는데 이것이 어떻게 object에 영향을 주는 것이지요?
asked (19 point) , 252 views
저도 c++ 이 본업인데 유니티를 이번에 해봤는데요

좀 오지랍이긴한데...

new 를 쓴곳은 결국 속도개선 때문에 다시 손을 봐야되더라고요

최대한 가비지컬렉터가 안불리게 new 를 덜쓰는걸 추천드려요 ㅎㅎ

1 답변

+1 vote
우수 답변
c++에 대입(할당) 연산자 오버로딩와 깊은 복사, 얖은 복사를 생각해보시면 아실 수 있을거라고 생각 드네요
c++에서도 참조냐 아니냐는 매개변수를 어떻게 받냐에 따라 결정되죠
그리고 c#은 value type 아니면 다 레퍼런스 그러니까 참조로 전달 되죠
answered (165 point)
선택됨
value 타입이 아니면 다 참조군요 감사합니다 !!!

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

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

430 질문
564 answers
572 댓글
37,582 users