unity3d GUI上显示3d模型

       我们的游戏选择角色的时候需要在2d GUI的上层显示3d模型,默认3d模型是显示在2d GUI下面的,所以需要另外创建一个Camera,并且把新建的Camera 设置 target 到 RenderTexture,然后把这个RenderTexture显示到GUI上就行了。


    代码如下:

Create Camera:

            _myObject = new GameObject(_Name, typeof(Camera), typeof(Skybox));
            _myCamera = _myObject.camera;
            _myCamera .depth = 2;
            _myCamera .clearFlags = CameraClearFlags.Skybox;
            _myCamera .backgroundColor = Color.clear;//Color.black;
            _myCamera .nearClipPlane = 0.3f;
            _myCamera .fieldOfView = 60;
            _myCamera .orthographicSize = 100.0f;


Create RenderTexture:

    private static void InitTexture(int with, int height)
    {
//       _myTexture = new RenderTexture(with, height, 2);

_myTexture= RenderTexture.GetTemporary(with, height, 0, RenderTextureFormat.ARGB32);
        _myTexture.name = "storyTexture" + _myObject .GetInstanceID();
        _myTexture.isPowerOfTwo = false;
        _myCamera .targetTexture = _storyTexture;
    }


Draw RenderTexture:

//GUI.DrawTexture(new Rect(0, 0, Screen.width, Screen.height), _myTexture,ScaleMode.StretchToFill);

GUI.DrawTexture(new Rect(0, 0, Screen.width, Screen.height), _myTexture,ScaleMode.ScaleToFit);


移动端有一些需要注意的地方:

1、创建RenderTexture的时候,如果直接new到iphone上背景就是黑的,晚上找到解决办法如下:

When setting up the Camera object, a RenderTexture is needed as the targetTexture for rendering. If you use a dynamically created Camera, you have one by default whose depth is 24. But it seems iOS devices only support depth = 0, so there are some problems.

To walk around, add a statement like this:

myCamera.targetTexture = RenderTexture.GetTemporary(myWidth, myHeight, 0, myFormat);

where the third parameter is the depth of the RenderTexture.


2、把RenderTexture画到屏幕上的时候,如果选择StretchToFill,手机上模型就会被缩放,需要选择ScaleToFit


  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值