开始了一个实例:
描述一下这个功能吧:窗口可以随意拖动,通过右下角的按钮可以随意调整整个窗口的大小,而且要让里面的东西都自适应: 用sprite建立一个bgr的大背景。然后建立label并且设置为textlist。建立scroll bar命名为scroll如图。还有用sprite建立一个button,负责让整个bgr大小可拖动变化, 给,bgr加上可拖动脚本——UIDrag Object Script.。给button加上UIDrag Resize Script。一切如下面的图: ![]()
button拖动大小变化的脚本添加。注意target是bgr如图:
![]()
bgr的拖动脚本添加注意target: ![]()
一切都ok了,让后调整里面每一个的Anchors的属性保证自适应。。。。。 然后开始弄输入框:把on Return key属性调成submit如图: ![]()
然后加入一个脚本命名为Mychat。控制输入框的输入功能:如下图注意把label加进去。。。。。
![]()
具体的Mychat脚本:
[csharp] view plaincopy
- using UnityEngine;
- using System.Collections;
-
- public class mychat : MonoBehaviour {
- private UIInput inputchat;
- public UITextList textlist;
-
- void Start () {
- inputchat = this.GetComponent<UIInput>();
- }
-
-
- public void Onchatsubmit()
- {
- string chatmessage = inputchat.value;//获取聊天内容
- textlist.Add(chatmessage);//把内容添加到textlist里面
- inputchat.value = "";//使输入框的内容清除
- }
-
-
- }
然后把Onsubmit本来的属性脚本删除(本来的脚本实现的功能是输入一次后输入框会失去焦点)然后把输入框拖进去如图。然后在method里面添加刚才脚本里写的方法
![]()
这样聊天功能就实现了运行一下输入内容后按enter键就可以发送消息到Label上显示了: ![]()
要想加入一个发送人的名字的实现在原来的代码里加入一下内容。全部代码如下;
[csharp] view plaincopy
- using UnityEngine;
- using System.Collections;
-
- public class mychat : MonoBehaviour {
- private UIInput inputchat;
- public UITextList textlist;
- private string []names=new string [3]//定义个数组表示用户
- {
- "小紫龙",
- "紫龙",
- "大紫龙"
-
- };
-
-
-
- void Start () {
- inputchat = this.GetComponent<UIInput>();
- }
-
-
- public void Onchatsubmit()
- {
- string chatmessage = inputchat.value;//获取聊天内容
-
- string name=names[Random .Range (0,3)];//随机输出一个名字
-
- textlist.Add(name+":"+chatmessage);//把内容添加到textlist里面
- inputchat.value = "";//使输入框的内容清除
- }
-
-
- }
运行效果如图:
![]()
|