Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在unity中从OnGui()中删除2d纹理_C#_Unity3d - Fatal编程技术网

C# 如何在unity中从OnGui()中删除2d纹理

C# 如何在unity中从OnGui()中删除2d纹理,c#,unity3d,C#,Unity3d,我想清除图像img1 我有一个void OnGui(),其中我将图像作为屏幕从服务器加载 节约 我需要在触摸屏幕后删除图像,这意味着我需要 取消激活图像纹理 void OnGUI() { GUILayout.Label(img1); foreach (UnityEngine.Touch touch in Input.touches) { CancelInvoke(methodName : "ChangeImage"); img1.enabled=false;//bu

我想清除图像img1

我有一个
void OnGui()
,其中我将图像作为屏幕从服务器加载 节约

我需要在触摸屏幕后删除图像,这意味着我需要 取消激活图像纹理

void OnGUI()
{
  GUILayout.Label(img1);

  foreach (UnityEngine.Touch touch in Input.touches)
  {
    CancelInvoke(methodName : "ChangeImage");
    img1.enabled=false;//but this line doesn't work
  }
}
我从服务器加载
img1
。它将出现 只有在30秒不活动之后


如何使
img1
在foreach内部停用,以便当我触摸屏幕保护程序时
img1
将被禁用。

Texture2D
是一个类/对象,而不是一个组件,因此不能使用
img1禁用它。enabled=false

GUILayout.Label(img1)周围简单地包装一个
boolean
变量。当触摸屏幕时,应将此布尔变量切换为
false

public Texture2D img1;
bool showImage = true;

void OnGUI()
{
    if (showImage)
    {
        GUILayout.Label(img1);
    }

    for (int i = 0; i < Input.touchCount; ++i)
    {
        if (Input.GetTouch(i).phase == TouchPhase.Began)
        {
            CancelInvoke(methodName: "ChangeImage");
            showImage = false;
        }
    }
}

您还可以使用
imageDisp=null将
imageDisp
设置为
null
但这在这里不是必需的。

img1在哪里以及如何声明?当你说它不起作用时,实际的问题是什么?错误?我认为这是C#而不是Unityscript,所以应该更改标记@程序员:你什么时候让图像再次出现?你也可以发布你的methodName函数吗?rest一切都很好。唯一的问题是如何使gui上显示的图像纹理消失。我们如何使该图像纹理禁用@ProgrammerOK。我把你问的部分放在了我的答案里。你必须把它和你说你已经开始工作的其他代码混合在一起。
public RawImage imageDisp;
public Texture2D img1;

void Update()
{
    for (int i = 0; i < Input.touchCount; ++i)
    {
        if (Input.GetTouch(i).phase == TouchPhase.Began)
        {
            CancelInvoke(methodName: "ChangeImage");
            imageDisp.enabled = false;
        }
    }
}