unity点击一个物体,出现一个按钮,再点击这个按钮,出现一个字幕窗口,最后点击物体,按钮窗口都消失

unity在线急等,悬赏可添加... unity在线急等,悬赏可添加 展开
 我来答
甫幼冬6
推荐于2017-11-22 · TA获得超过205个赞
知道小有建树答主
回答量:169
采纳率:50%
帮助的人:118万
展开全部
简单给你个思路吧:
首先处理点击了对象(obj):
1) 首先obj需要用到一个碰撞器,此处用Box Collider,一个自定义组件Controller.cs,用来检测鼠标是否点击。
2) 在obj中添加Box Collider组件,可以不用设置isTrigger,根据自己需求而定。
3) 在obj中添加Controller组件。
4) 设置obj的标签Tag为自定义标签,此处设置为”myCube”。
5) Controller组件代码如下:
void Update()
{
if(Input.GetButtonDown("Fire1"))
{

Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hitInfo;
if(Physics.Raycast(ray,out hitInfo))
{
GameObject gameObj = hitInfo.transform.gameObject;
if(gameObj.transform.tag == "myCube")
{
//最好在这里吧对象坐标也获取到,存到变量待用;

//这里需要标识以下,实现隐藏和显示

if(!m_isShowBtn)//如果没有按钮弹出

{

m_isShowBtn=true;
}
else

{

m_isShowBtn=false;
}
}
}
}
}
注:上面是引用别人的,但原理没问题。
其次我们来处理弹出按钮和字幕,
1.首先你需要知道对象坐标,

2.然后在OnGUI函数中加入以下代码:

void OnGUI{
if(m_isShowBtn)
{

if (GUI.Button(new Rect(x, y, w,h ),"字母框"))
{
//这里获取字母框,可以加个标示,比如:

m_isShowText=true;

}
if(m_isShowText)

{
//字体大小
GUI.skin.label.fontSize = 32;
//居中

GUI.skin.label.alignment = TextAnchor.MiddleCenter;
GUI.Label(new Rect(x,y, w, h), "这里是字母内容:");
}
}
}
解释一下,这是动态生成UI按钮,其中,x,y为按钮或文本的起始坐标,w,h为宽高,这些参数大小可以根据获取到的物体坐标来定义,或者用其他方法获取都行,自己研究一下;
自己思路随便写了以下,有BUG的话自己调一下
追问
费心了,谢谢了,但是出错啊,不会改啊!!!我在360问答也问这个问题,我名字叫大号茶杯,或者果茶比卡丘,那个号金币多,您帮我在那个号解答的话,可以给您很多金币至少200金币,虽说是虚拟的,但是我只是表达感谢。
匿名用户
2018-07-11
展开全部

using UnityEngine;

using System.Collections;

public class Click : MonoBehaviour

{

public GameObject btn;

public GameObject kuang;

void Awake()

{

btn.SetActive(false);

kuang.SetActive(false);

}

void Update()

{

if (Input.GetMouseButtonDown(0))

{

Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);

RaycastHit hitInfo;

if (Physics.Raycast(ray, out hitInfo))

{

if (hitInfo.collider.name == "Cube")

{

btn.SetActive(true);

if (kuang.activeSelf && btn.activeSelf)

{

btn.SetActive(false);

kuang.SetActive(false);

}

}

}

}

if (btn == null)

{

return;

}

else {

UIEventListener.Get(btn.gameObject).onClick = MyClick;

}

}

void MyClick(GameObject o)

{

kuang.SetActive(true);

}

}

按钮和对话框直接拖进去就OK ,脚本挂载Cube上

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
冬阳1993
2018-05-30
知道答主
回答量:15
采纳率:0%
帮助的人:1.2万
展开全部
首先放两个按钮,一个字幕窗口,开始的时候把第二个按钮和字幕窗口都隐藏掉。
点击第一个按钮,第二个按钮出现,然后再点击第二个按钮,字幕出现。
这代码太简单。。。。。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式