对于团结游戏小组项目,我目前的任务是找出以下内容:在游戏中,玩家迟早会找到一张躺在桌子上的图片(在这种情况下是一张地图),当点击地图它将变为屏幕大小,以便您可以正确地查看它,当再次单击时,地图应该返回到它在桌面上的位置。我想通过使用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。然后我创建了脚本并将其放到画布上。这是正确的方法吗?
答案 0 :(得分:1)
呃,这段代码似乎什么也没做。
OnMouseDown
设置为ScreenSpaceOverlay
(就像在世界中一样)。 Update()
来了,将其设置回WorldSpace
(因为它不是那样)。这一切都发生在同一帧中。完全是你告诉它的。 :)
我会以另一种方式做到这一点(比如看相机/缩放以适应平截头体,或者用相机本身做类似的事情)。你不能动画这个,不能真正定制填充/等等。