2017-05-08 16 views

答えて

1

RectTransformを追加するのと同じ方法です。

newObject.AddComponent<Image>(); 

また、Imageコンポーネントを見つけることができるようにusing UnityEngine.UIを追加する必要があります。

+0

'UnityEngineを使用して:

using UnityEngine; public class SpriteTest : MonoBehaviour { public Sprite sprite; private void Start() { GameObject newObject = new GameObject("ObjectName"); SpriteRenderer spriteRenderer = newObject.AddComponent<SpriteRenderer>(); spriteRenderer.sprite = sprite; } } 

それとも単純にテクスチャを表示するには、あなたがMeshRendererの材料に主な質感をオーバーライドすることができます、あなたはSpriteRendererを使用することができます.UI'それは私が逃したものです! – David

2

これはあなたのゲームオブジェクトにImageコンポーネントを追加します。

.Createキャンバス:

newObject.AddComponent<Image>(); 

より多くのものは表示するImageコンポーネントの順序で行う必要があります。 Canvasを保持しているCanvasオブジェクトを作成し、CanvasコンポーネントをCanvasオブジェクトに追加します。また、CanvasScalerGraphicRaycasterのような他の重要なUIコンポーネントをCanvasに添付する必要があります。

あなたnew GameObject("ObjectName");と.CreateあなたImageゲームオブジェクト、そのゲームオブジェクトへのイメージ・コンポーネントを接続するnewObject.AddComponent<Image>();を呼び出します。

を作成します。ImageゲームオブジェクトCanvasの子です。

これは、キャンバスや子供などの画像を作成する全体のプロセスは次のとおりです。

void Start() 
{ 
    //Create Canvas 
    GameObject canvas = createCanvas(false); 

    //Create your Image GameObject 
    GameObject newObject = new GameObject("ObjectName"); 

    //Make the GameObject child of the Canvas 
    newObject.transform.SetParent(canvas.transform); 

    //Add Image Component to it(This will add RectTransform as-well) 
    newObject.AddComponent<Image>(); 

    //Center Image to screen 
    newObject.GetComponent<RectTransform>().anchoredPosition = Vector2.zero; 
} 



//Creates Hidden GameObject and attaches Canvas component to it 
private GameObject createCanvas(bool hide) 
{ 
    //Create Canvas GameObject 
    GameObject tempCanvas = new GameObject("Canvas"); 
    if (hide) 
    { 
     tempCanvas.hideFlags = HideFlags.HideAndDontSave; 
    } 

    //Create and Add Canvas Component 
    Canvas cnvs = tempCanvas.AddComponent<Canvas>(); 
    cnvs.renderMode = RenderMode.ScreenSpaceOverlay; 
    cnvs.pixelPerfect = false; 

    //Set Cavas sorting order to be above other Canvas sorting order 
    cnvs.sortingOrder = 12; 

    cnvs.targetDisplay = 0; 

    addCanvasScaler(tempCanvas); 
    addGraphicsRaycaster(tempCanvas); 
    return tempCanvas; 
} 

//Adds CanvasScaler component to the Canvas GameObject 
private void addCanvasScaler(GameObject parentaCanvas) 
{ 
    CanvasScaler cvsl = parentaCanvas.AddComponent<CanvasScaler>(); 
    cvsl.uiScaleMode = CanvasScaler.ScaleMode.ScaleWithScreenSize; 
    cvsl.referenceResolution = new Vector2(800f, 600f); 
    cvsl.matchWidthOrHeight = 0.5f; 
    cvsl.screenMatchMode = CanvasScaler.ScreenMatchMode.MatchWidthOrHeight; 
    cvsl.referencePixelsPerUnit = 100f; 
} 

//Adds GraphicRaycaster component to the Canvas GameObject 
private void addGraphicsRaycaster(GameObject parentaCanvas) 
{ 
    GraphicRaycaster grcter = parentaCanvas.AddComponent<GraphicRaycaster>(); 
    grcter.ignoreReversedGraphics = true; 
    grcter.blockingObjects = GraphicRaycaster.BlockingObjects.None; 
} 
1

RectTransformは主にUIの目的のために使用されます。あなたがすでに設定キャンバスを持っている場合は、Imageコンポーネントを追加することができますが、キャンバスの子としてそれを設定することをお勧めします:

using UnityEngine; 
using UnityEngine.UI; 

public class ImageTest : MonoBehaviour { 
    public Canvas canvas; 
    public Sprite sprite; 
    public float width = 10; 
    public float height = 10; 

    private void Start() { 
     GameObject newObject = new GameObject("ObjectName"); 
     RectTransform rectTransform = newObject.AddComponent<RectTransform>(); 
     rectTransform.sizeDelta = new Vector2(width, height); 
     Image image = newObject.AddComponent<Image>(); 
     image.sprite = sprite; 
     newObject.transform.SetParent(canvas.transform, false); 
    } 
}; 

あなただけのシーンでスプライトを配置する場合

using UnityEngine; 

public class TextureTest : MonoBehaviour { 
    public Texture texture; 

    private void Start() { 
     GameObject newObject = GameObject.CreatePrimitive(PrimitiveType.Quad); 
     MeshRenderer meshRenderer = newObject.GetComponent<MeshRenderer>(); 
     meshRenderer.material.mainTexture = texture; 
    } 
} 
関連する問題