C# 如何在unity中从OnGui()中删除2d纹理
我想清除图像img1 我有一个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
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;
}
}
}