NGUI中点击文字弹出物品的Tip
来源:互联网 发布:水泵扬程计算软件 编辑:程序博客网 时间:2024/06/06 07:25
用途描述:
文字的超链接,所谓的文字的超链接,就是需要点击如下:
德玛西亚获得了[绿色盔甲],然后你点击绿色盔甲,要弹出一个物品的介绍界面。
这个需求一般的会想到的做法是,在绿色盔甲的后面创建一个透明的image,然后为image设置collider,然后编写click事件处理函数。但是绿色盔甲的id呢?因为要根据这个id去设置tip的数据呀,所以这个有点难办了。
下面的解决方法是,仿照ngui中的[url=]http://blog.csdn.net/wodownload2/article[/url]
然后再label中你看不到url这些关键字的,原因是在NGUIText.cs中,进行了处理:
switch (sub6){ case "[/sub]": sub = 0; index += 6; return true; case "[/sup]": sub = 0; index += 6; return true; //这里就是过滤掉url关键字 case "[/url]": index += 6; return true; //这里是自己添加的 case "[/xxx]": index += 6; return true;}
然后再看:
if (text[index + 1] == 'u' && text[index + 2] == 'r' && text[index + 3] == 'l' && text[index + 4] == '='){ int closingBracket = text.IndexOf(']', index + 4); if (closingBracket != -1) { index = closingBracket + 1; return true; } else { index = text.Length; return true; }}
这个就是屏蔽掉url的地方了。
仿照此处,再拷贝一份即可。比如上面添加的当遇到xxx的时候也不显示,则为:
if (text[index + 1] == 'x' && text[index + 2] == 'x' && text[index + 3] == 'x' && text[index + 4] == '='){ int closingBracket = text.IndexOf(']', index + 4); if (closingBracket != -1) { index = closingBracket + 1; return true; } else { index = text.Length; return true; }}
最后如何获取[url=]xxxx.com[/url中的值呢?在UILabel.cs中你可以看到:
public string GetUrlAtCharacterIndex(int characterIndex){ if (characterIndex != -1 && characterIndex < mText.Length - 6) { int linkStart; // LastIndexOf() fails if the string happens to begin with the expected text if (mText[characterIndex] == '[' && mText[characterIndex + 1] == 'u' && mText[characterIndex + 2] == 'r' && mText[characterIndex + 3] == 'l' && mText[characterIndex + 4] == '=') { linkStart = characterIndex; } else linkStart = mText.LastIndexOf("[req=", characterIndex); if (linkStart == -1) return null; linkStart += 5; int linkEnd = mText.IndexOf("]", linkStart); if (linkEnd == -1) return null; int urlEnd = mText.IndexOf("[/url]", linkEnd); if (urlEnd == -1 || characterIndex <= urlEnd) return mText.Substring(linkStart, linkEnd - linkStart); } return null;}
这个就是获取关键字[url=]xxxx.com[/url]中的xxxx.com的方法,所以你也可以拷贝一份即可:
public string GetUrlAtCharacterIndex2(int characterIndex){ if (characterIndex != -1 && characterIndex < mText.Length - 6) { int linkStart; // LastIndexOf() fails if the string happens to begin with the expected text if (mText[characterIndex] == '[' && mText[characterIndex + 1] == 'x' && mText[characterIndex + 2] == 'x' && mText[characterIndex + 3] == 'x' && mText[characterIndex + 4] == '=') { linkStart = characterIndex; } else linkStart = mText.LastIndexOf("[req=", characterIndex); if (linkStart == -1) return null; linkStart += 5; int linkEnd = mText.IndexOf("]", linkStart); if (linkEnd == -1) return null; int urlEnd = mText.IndexOf("[/xxx]", linkEnd); if (urlEnd == -1 || characterIndex <= urlEnd) return mText.Substring(linkStart, linkEnd - linkStart); } return null;}
这样你就不用再考虑添加什么collider了,而是直接能够点击响应并能够获取,当前是哪个物品的id了。
0 0
- NGUI中点击文字弹出物品的Tip
- NGUI的物品拖拽
- 点击文字弹出照片
- 【Unity&NGUI】背包系统物品的累加
- 点击文字弹出图片层
- NGUI中计算UILabel中每个文字的具体位置
- Unity3D NGUI 物品系统
- NGUI中如何获取当前点击的物体
- Unity中NGUI点击事件委托的应用
- 【NGUI】Unity中使用NGUI和FingerGestures插件点击UI穿透的问题
- NGUI中不规则形状点击事件
- 点击按钮/文字弹出背景变暗的可拖动的DIV提示层
- 设置一段文字中某些特定的文字可点击,且文字颜色变色
- CSS+JS实现点击文字弹出定时自动关闭的DIV层菜单
- HTML-通过点击网页上的文字弹出QQ添加好友页面
- HTML-通过点击网页上的文字弹出QQ添加好友页面
- pyCharm 中有用的tip
- unity 中基于NGUI中实现引导,拦截玩家的点击动作
- 检查手机上面是否安装存储卡的判断
- 解读 C 语言中的指针
- 【转】oracle SCHAME的含义
- 初识GWT(1)
- 【CodeForces】[580B]Kefa and Company
- NGUI中点击文字弹出物品的Tip
- Android之TelephonyManager类的方法详解
- leetcode:数组:Remove Duplicates from Sorted Array
- os htttp网络请求cookie的读取与写入(NSHTTPCookieStorage)
- jQuery 之 ajax 的状态函数(15)
- 读书总结——《分布式java应用 基础与实践》
- leetcode 260. Single Number III
- ADB常用命令
- C++ exe 传参