オブジェクトをUItextureにレンダリング

4953 ワード

このスクリプトをカメラに掛けます
 
using UnityEngine;

using System.Collections;



[RequireComponent(typeof(Camera))]

public class UIModelCamera : MonoBehaviour {



    //Render Texture 

    public int Width=256;

    public int Height = 256;

    public int Depth = 16;



    // 

    public GameObject Model;



    // 

    public Vector3 Offset;



    // 

    public Vector3 LookAtOffset;



    // UITexture Render Texture

    public UITexture Texture;



    private RenderTexture mRenderTexture;

    private Camera mCamera;



    void Awake()

    {

        mCamera = gameObject.GetComponent<Camera>();

        mRenderTexture = new RenderTexture(Width, Height, Depth);

        mCamera.targetTexture = mRenderTexture;

    }

    // Use this for initialization

    void Start () {



        SetModel(Model);

        SetTexture(Texture);

    }



    void OnDestroy()

    {

        Destroy(mRenderTexture);

    }



    // 

    public void SetModel(GameObject obj)

    {

        Model = obj;

        if(null!=Model)

        {

            gameObject.transform.position = Model.transform.position + Offset;

            gameObject.transform.forward = Model.transform.position + LookAtOffset - gameObject.transform.position;

            mCamera.cullingMask = 1<<Model.layer;

        }

    }



    //

    public void SetTexture(UITexture texture)

    {

        Texture = texture;

        if (null != Texture)

        {

            Texture.mainTexture = GetRenderTexture();

        }

    }



    public RenderTexture GetRenderTexture()

    {

        return mRenderTexture;

    }



#if UNITY_EDITOR

    void Update()

    {

        SetModel(Model);

        SetTexture(Texture);

    }

#endif

}