Unity3D切换画布图像的RenderMode

时间:2015-05-20 15:58:20

标签: image canvas unity3d switch-statement render

对于团结游戏小组项目,我目前的任务是找出以下内容:在游戏中,玩家迟早会找到一张躺在桌子上的图片(在这种情况下是一张地图),当点击地图它将变为屏幕大小,以便您可以正确地查看它,当再次单击时,地图应该返回到它在桌面上的位置。我想通过使用UI Canvas和OnMouseDown函数来实现这一点。

这是我的代码atm:

using UnityEngine;
using System.Collections;

public class map : MonoBehaviour {

  private Canvas MapDummy;

  void Awake()
  {
    MapDummy = GetComponent<Canvas>();
  }

  void OnMouseDown()
  {
    if(MapDummy.renderMode == RenderMode.WorldSpace)
    {
        MapDummy.renderMode = RenderMode.ScreenSpaceOverlay;
    }
  }

  void Update()
  {
    if(MapDummy.renderMode != RenderMode.WorldSpace
       && Input.GetMouseButtonDown(0))
    {
        MapDummy.renderMode = RenderMode.WorldSpace;
    }
  }
}

我没有错误,但没有任何反应。我是否以正确的方式放置组件?首先,我创建了一个GameObject UI Canvas,向其中添加了Component Image,并将我的图片“MapDummy”作为SourceImage添加到了Image中。我使用“Texture Type:Sprite”设置将MapDummy导入为Asset。然后我创建了脚本并将其放到画布上。这是正确的方法吗?

1 个答案:

答案 0 :(得分:1)

呃,这段代码似乎什么也没做。

  1. OnMouseDown设置为ScreenSpaceOverlay(就像在世界中一样)。
  2. 然后Update()来了,将其设置回WorldSpace(因为它不是那样)。
  3. 这一切都发生在同一帧中。完全是你告诉它的。 :)

    我会以另一种方式做到这一点(比如看相机/缩放以适应平截头体,或者用相机本身做类似的事情)。你不能动画这个,不能真正定制填充/等等。