【问题标题】:Unity3D Switch RenderMode of Canvas ImageUnity3D切换Canvas图像的RenderMode
【发布时间】:2015-08-02 00:00:53
【问题描述】:

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

这是我的自动取款机:

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 画布,将组件图像添加到其中,并将名为“MapDummy”的图片作为 SourceImage 添加到图像中。我使用设置“纹理类型:Sprite”将 MapDummy 作为资产导入。然后我创建了脚本并将其放到画布上。这是正确的方法吗?

【问题讨论】:

    标签: image canvas unity3d switch-statement render


    【解决方案1】:

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

    1. OnMouseDown 设置为 ScreenSpaceOverlay(就像在世界上一样)。
    2. 然后Update() 来,设置回WorldSpace(因为不是那样)。

    这一切都发生在同一帧中。完全按照你说的去做。 :)


    我绝对会以另一种方式来做(比如观察相机/缩放以适应截锥体,或者对相机本身做类似的事情)。你不能动画这个,不能真正自定义填充/等。

    【讨论】:

      猜你喜欢
      • 2019-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多