2015-02-02 10 views
0

저는 미니 크래프트와 같은 2D 게임을 만들고 있습니다. 한 덩어리의 블록 텍스처를 변경하는 것 외에는 모든 것이 괜찮은 것처럼 보입니다. 이것은 스프라이트를 바꾸는 방법입니다.Sprite.Create를 사용하여 스프라이트를 변경하더라도 적용되지 않습니까?

var block = new GameObject("blok", typeof(SpriteRenderer), typeof(BoxCollider2D), typeof(CircleCollider2D)); 
block.GetComponent(SpriteRenderer).sprite = Sprite.Create(Resources.Load("/Prefabs/Blokovi/blok_zemlja") as Texture2D, Rect(0, 240, 16, 16), Vector2(0.5, 0.5), 16); 

효과가 없으므로 그 이유는 무엇입니까?

P. UnityScript/JavaScript를 사용합니다.

미리 감사드립니다.

+0

새 게임 객체를 만들려면 instantiate()를 사용해야합니다. – LearnCocos2D

답변

0

난 게임 오브젝트를 차단하는 "BLOK"라는 태그를 추가하고 (태그 "BLOK"을 게임 오브젝트) 모든 블록의 유형에 스프라이트 변경 루프를 추가하여 내 문제를 해결했다. 다음은 루프 코드입니다.

var go_list = GameObject.FindGameObjectsWithTag ("blok"); 

    for (var object in go_list) { 
    } 
0

새 빈 GameObject를 만들 때 Instantiate()를 사용할 필요가 없습니다. 당신은 생성자만을 사용하여이 작업을 수행합니다. 새 구성 요소로 GameObject를 채우려면 유형을 생성자에 배치하는 대신 AddComponent() 메서드를 사용하십시오. 이 메서드를 반환하는 형식은 Component이므로 방금 추가 된 구성 요소에 대한 참조를 쉽게 얻을 수 있습니다. 작은 예 :

var block = new GameObject("block"); 
block.AddComponent("BoxCollider2D"); 
block.AddComponent("CircleCollider2D"); 
var spriteRenderer = block.AddComponent("SpriteRenderer"); 
spriteRenderer.sprite = Sprite.Create(Resources.Load("/Prefabs/Blokovi/blok_zemlja") as Texture2D, Rect(0, 240, 16, 16), Vector2(0.5, 0.5), 16);