哪里有做好的unityunity ugui聊天系统统demo

UGUI聊天系统怎么做?有人知道吗?
UGUI聊天系统怎么做?
尤其是图文混排这块,求可以借鉴的代码指导下,谢谢了
要评论请先&或者&
楼主你解决了吗?我现在也要做一个聊天系统。需求发布后1小时内收到服务商响应每个需求平均有10个服务商参与95%以上的需求得到了圆满解决所有需求不向雇主收取任何佣金年终总结这么写,升职又加薪
有个unity3d模拟飞行游戏的demo小活找小团队做下
有相似问题想解决?专业顾问来帮助您
发布需求, 托管赏金
匹配服务商
选择服务商,签单
服务商工作
验收并付款
参与报价,开始赚钱
提交你的报价和方案
中标后交付作品
获得任务赏金
交易成功的需求
其它游戏开发相关需求4个自制的Demo下载_unity3d吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:60,987贴子:
4个自制的Demo下载收藏
想试试Unity5 最新的实时SEGI效果如何,于是就做了几个demo盘pan。baidu。com/s/1hsc17Ti把。改成.截图
unity3d,学习专业的游戏引擎-unity3d.达内游戏主程培训,一般要4-16周,就可掌握.变高端游戏达人-薪资翻番.unity3d费用根据培训课时定,上海官方咨询-unity3d.
上下左右键是调整光照方向除了城市加车那个Demo,其它的3个色调映射没关掉,这样会导致物体的颜色反射到旁边物体上
实时光照效果现在这些都是bate测试版截图
画面不错啊,不知道帧数如何
女模特很妖娆
画面原画的吧好清晰。可以和你学做菜吗
没有工程文件吗?
火星时代unity3d,争当游戏大触,月薪过万小意思,手绘技能,概念设计,商业应用一步到位,你与u3d游戏特效设计师只差一步,赶快点击吧!
这个插件我用了,资源消耗不是一般的大,室内设计演示什么的可以用一下提高效果,游戏的话…我保持围观态度
另外说一句 SEGI的文档里说必须把unity自带GI关掉,可是我试了一下觉得开开比较好,否则模型背光面可能会太黑
楼主想请教一下 你用的U3D 是什么版本? 我用的U3D5.2运行SEGI插件自带的例子没有阴影 换了一台电脑用U3D5.4运行也是一样的不知是什么原因?关掉GI阴影正常
看帧数好像巨卡无比,来个线框模式截图
最近已经在把gi和实时烘焙关闭做游戏了,风扇哗哗哗的响,还是做完后再开吧,别提你这个gi插件了,开了更卡系统默认的gi如果设置好的话,加上pbr贴图其实也是可以的,有一款动态制作贴图的软件非常不错
女模特胸太平
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或蓬莱仙羽 的BLOG
用户名:蓬莱仙羽
文章数:533
评论数:71
访问量:38510
注册日期:
阅读量:5863
阅读量:12276
阅读量:370556
阅读量:1064917
51CTO推荐博文
又再一次修改unity web聊天的功能,之前的两次尝试都觉得服务器端性能太差了,写的还不够成熟,在龙哥的指导下,尝试使用IOCP重新写服务器端,使用线程池大大提高了socket处理性能,相比较之前多线程多个socket一一对应,是在只能是新手做这玩玩的,性能很差,不忍直视!所以重新找到IOCP这个服务器端socket框架,感觉效果还不错,经过测试能达到3000左右的连接数!我之前的聊天的博文:服务器端是winform窗体,可能unity切换到web会报错,但没关系,因为权限的问题,可以参考我这篇文章:,一、socket测试650) this.width=650;" src="http://img.blog.csdn.net/45968?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZGluZ3hpYW93ZWkyMDEz/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" style="border:" alt="SouthEast" />650) this.width=650;" src="http://img.blog.csdn.net/45968?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZGluZ3hpYW93ZWkyMDEz/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" style="border:" alt="SouthEast" />经过测试能够连接1000次,并且消耗的服务器端资源也不是很多,并且还比较稳定!二、web聊天测试650) this.width=650;" src="http://img.blog.csdn.net/36390?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZGluZ3hpYW93ZWkyMDEz/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" style="border:" alt="SouthEast" />650) this.width=650;" src="http://img.blog.csdn.net/10296?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZGluZ3hpYW93ZWkyMDEz/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" style="border:" alt="SouthEast" />在线测试:我的博客:http://blog.csdn.net/dingxiaowei2013本文出自 “” 博客,请务必保留此出处
了这篇文章
类别:┆阅读(0)┆评论(0)扫一扫,访问微社区
后使用快捷导航没有帐号?
签到成功!您今天第{todayrank}个签到,签到排名竞争激烈,记得每天都来签到哦!已连续签到:{constant}天,累计签到:{days}天
关注:1487
当前位置: &
__________________________________________________________________________________
开发者干货区版块规则:
  1、文章必须是图文形式。(至少2幅图)
& && &2、文章字数必须保持在1500字节以上。(编辑器右下角有字数检查)
& && &3、本版块只支持在游戏蛮牛原创首发,不支持转载。
& && &4、本版块回复不得无意义,如:顶、呵呵、不错......【真的会扣分的哦】
& && &5、......
__________________________________________________________________________________
查看: 2086|回复: 19
聊天系统的搭建(包括亲加 SDK 接入)
本帖为抢楼帖,欢迎抢楼!&
9排名<font color="#FF昨日变化5主题帖子积分
蛮牛币1047
在线时间149 小时
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
才可以下载或查看,没有帐号?
本帖最后由 Lucifer_Lu 于
18:58 编辑
在本帖开写之前必须像蛮牛表示十分抱歉,一直在赶项目 真的很忙,天天加班到深夜。每每看到蛮牛送的书 都有满满的罪恶感,so sorry ~
好了进入正题,正好最近项目里面做了聊天系统,而且现在手游里面也通常都会加入聊天的功能,就把我预研阶段写的一个小 Demo 拿出来跟大家共享一下。先给大家看下效果图。
E@SJ%]3L41GKAVE[`KCNISW.png (22.8 KB, 下载次数: 0)
16:28 上传
(Q17UD6558AZN%XO@Q7BTEL.png (104.74 KB, 下载次数: 0)
16:28 上传
W72E_@BRX4(W05]}}Q0B1[L.png (109.51 KB, 下载次数: 0)
16:28 上传
因为手机屏幕的空间有限,所以当玩家不需要聊天时候可以通过侧面的小按钮 把聊天框收回去,用时候再拉出来。可以输入表情和文字,表情可拖动。当然我最终项目当中的表情是横向翻页,可输入的内容也包括可点击跳转内容等,这些我们后面再说实现方式。
首先先来看一下 Hierarchy 中 UI 的 结构:
YV{Y{BUL0~V][{Z%FVQFCIY.png (11.07 KB, 下载次数: 0)
16:46 上传
看了这个,对这个结构应该是很清晰了,我是按照功能分了一下,主要分为输入部分、显示部分、发送按键、拉出收回按钮部分,表情部分(没截全部分是因为下面都是一样的表情了)
具体这个 UI 怎么摆,输入框怎么做这些比较基础的东西我就不说了,不懂得亲可以自己动手做一下,是非常简单的。这里我要说一下,非常抱歉,因为我们这个游戏项目是挺早以前就开始做的,现在已经上线一年多了,所以 NGUI 用的版本比较老旧,因为一些原因也没有升级,但是其实原理都是一样的,这个版本看懂了,在新版本上只会更方便。
这里面大家需要注意的是 Show 结点下面的 Root,
1.png (12.39 KB, 下载次数: 0)
16:53 上传
这里我使用了 UITable Direction Up,因为这里我以后要发送的东西高度也许并不是一样的,所以并没有采用 UIGrid 。
下面是 ChatUIImpl 的实现部分,是绑定在 ChatUI 上面的
[C#] 纯文本查看 复制代码using UnityE
using System.C
using System.Collections.G
public class ChatUIImpl : MonoBehaviour {
public static ChatUIImpl I
public UITable ContentR
public UIButton SendB
public GameObject ChatItemP
public UILabel InputL
public GameObject OpenB
public GameObject emojiI
public GameObject GotyeM
private GotyeLogin gotyeL
private TweenPosition OpenA
private bool isOpen =
public static ChatUIImpl GetInstance(){
if (Instance == null) {
return new ChatUIImpl ();
void Awake(){
//GotyeModule.GetInstance ().InitGotye ();
//GotyeModule.GetInstance ().loginGotye();
//GotyeLogin.GetInstance().gotyeLogin();
// Use this for initialization
void Start () {
Instance =
OpenAnimator = gameObject.GetComponent&TweenPosition& ();
UIEventListener.Get (SendBtn.gameObject).onClick = SendO
UIEventListener.Get (OpenBtn).onClick = playA
void SendOpration(GameObject btn){
gotyeLogin = GotyeModule.GetComponent&GotyeLogin&();
gotyeLogin.gotyeLogin();
//GotyeModule.GetInstance ().loginGotye();
string content = InputLabel.
content = content.Trim ();
if (content != &&) {
UILabel itemLabel = ChatItemPrefab.GetComponent&UILabel&();
itemLabel.text =
NGUITools.AddChild(ContentRoot.gameObject,ChatItemPrefab);
if(ContentRoot.transform.childCount & 0){
ContentRoot.transform.GetChild(ContentRoot.transform.childCount-1).SetSiblingIndex(0);
ContentRoot.repositionNow =
ContentRoot.Reposition();
InputLabel.text = &&;
void playAnimation(GameObject btn){
if (!isOpen) {
InputLabel.text = &&;
OpenAnimator.enabled =
OpenAnimator.Play(true);
OpenAnimator.Play(false);
isOpen = !isO
public void InputEmoji(string spriteName){
if (emojiItem != null && ContentRoot != null) {
NGUITools.AddChild (ContentRoot.gameObject, emojiItem);
if (ContentRoot.transform.childCount & 0) {
ContentRoot.transform.GetChild (ContentRoot.transform.childCount - 1).SetSiblingIndex (0);
UISprite emojiSpr = ContentRoot.transform.GetChild (0).GetComponent&UISprite& ();
emojiSpr.spriteName = spriteN
ContentRoot.repositionNow =
ContentRoot.Reposition ();
然后每一个表情上面也是绑定了脚本的 用来处理表情的点击事件
[C#] 纯文本查看 复制代码using UnityE
using System.C
public class emojiItem : MonoBehaviour {
public delegate void onItemClickDelegate(string emojiName);
public onItemClickDelegate onItemC
public GameObject RootO
// Use this for initialization
void Start () {
onItemClick = RootObject.GetComponent&ChatUIImpl& ().InputE
UIEventListener.Get (gameObject).onClick = HandleItemC
void HandleItemClick(GameObject btn){
onItemClick (gameObject.name);
这里我并没有做 图文混排 因为是个简单的小 Demo 嘛 ~ 图文混排也是很简单的, 百度一下就有好多好多的例子和做法了。这里我的每一条消息,每一个表情 都是一个 prefab 在发送消息的时候clone 出来然后放到 UITable 中,然后刷新一下 UITable 就添加进去了。
这里需要注意的是,如果只是直接向 UITable 中加 Item 的话会遇到一个,聊天内容顺序不对,新说的话会在上面显示出来&&,然后最后结果就是聊天消息最后向上排,新说的话被挡住了 你能看到的永远都是那几句刚开始说的 旧的消息,这里做了一个特殊处理
& && && && && && && && &NGUITools.AddChild(ContentRoot.gameObject,ChatItemPrefab);
& && && && && && && && &if(ContentRoot.transform.childCount & 0){
& && && && && && && && && && &&&ContentRoot.transform.GetChild(ContentRoot.transform.childCount-1).SetSiblingIndex(0);
& && && && && && && && &}
当然就是把你新 add 进去的 Item 永远作为这个 Transform 的第一个 Item&&就 Ok 了 ~ (这里如果是有更方便的方式,还请大神告知,轻喷 ~ 十分感谢),这样旧消息被顶上去,显示在最下面的就永远是最新的消息咯 ~
--------------------------------------------------------------------------------------------------------&&分割线&&-----------------------------------------------------------------------------------------------------
从这里开始就是 亲加 SDK 接入的部分了,导入什么的亲加文档上都有了, 就是一个 package 的包导入就 OK ,但是比较坑的是 他们的文档真的是很久很久以前了。大家还是要以他们的 Demo 为主 ~ 需要注意的是,文档中说到的分 32bit&&64bit&&是指的 Unity , 以上的是 64bit&&以下不包括 5 是 32bit , 然后只有 PC 可以调试哦。
这了我写一个 GotyeModule 的类来实现一些 亲加通讯的 API ,比较方便的做法是:这个类继承 GotyeMonoBehaviour , 还是直接上代码吧
[C#] 纯文本查看 复制代码
#if UNITY_EDITOR_WIN || UNITY_ANDROID || UNITY_IPHONE
public class GotyeModule : GotyeMonoBehaviour,LoginListener,ChatListener,PlayListener {
public class GotyeModule:MonoBehaviour{
#if UNITY_EDITOR_WIN || UNITY_ANDROID || UNITY_IPHONE
public delegate void ReciveMessageForShowDel(GotyeMessage message);
public ReciveMessageForShowDel onReciveMessageForS
public delegate void SendMsgCDStartDel();
public SendMsgCDStartDel onSendMsgCDS
public SendMsgCDStartDel onEnterRoomS
public SendMsgCDStartD
private static GotyeModule I
public static bool isInR
// 当前是否在聊天室中
public static GotyeRoom CurR
// 当前所在聊天室(共有4个聊天室 Android / Ios 的 微信/ QQ 聊天室)
GotyeAPI gotyeAPI;
// 亲加 API 总接口
private List&GotyeRoom& roomL
// 聊天室列表(用于存储亲加后台返回的聊天室列表,我们这里只有一个聊天室)
public bool isReciveMsg =
public bool isSendPVPMsg =
private uint _currentMatchingSeqNo;
private PVPMatchingPanel _playerMatchingP
public TransmitUserInfo selfI
public ChatExtraData chatExtraD
//public List&TransmitUserInfo& transmitUserInfoL
public static GotyeModule GetInstance(){
if(Instance == null){
//Instance = gameObject.GetComponent&GotyeModule&();
public GotyeModule(){
isInRoom =
isReciveMsg =
isSendPVPMsg =
selfInfo = new TransmitUserInfo();
chatExtraData = new ChatExtraData();
//transmitUserInfoList = new List&TransmitUserInfo&();
// 初始化操作放在这里
void Awake() {
GetInstance();
gotyeAPI = GotyeAPI.GetInstance();
if(Application.platform != RuntimePlatform.Android){
GotyeStatusCode code = gotyeAPI.Init (&45&, &com.Gotye&);
Debug.LogError(&Init Status : & + code);
api.InitIflySpeechRecognition();
// 初始化后添加监听
void Start() {
base.Start ();
gotyeAPI.Logout ();
gotyeAPI.AddListener(this);
GotyeAPI.GetInstance().Log (&login start ... &);
gotyeLogin();
void OnDestroy(){
gotyeAPI.RemoveListener(this);
base.OnDestroy();
void OnDisable(){
quitRoom();
// 登录操作
public void gotyeLogin(){
gotyeAPI.ClearCache();
GotyeStatusCode code = gotyeAPI.Login (name,null);
Debug.LogError(&Login Status : & + code);
// 注销操作
public void gotyeLogout(){
gotyeAPI.Logout ();
// 登录回调
public void onLogin(GotyeStatusCode code, GotyeUser loginUser){
Debug.LogError(& onLogin , code = & + code);
if(code == GotyeStatusCode.CodeOK || code == GotyeStatusCode.CodeReloginOK){
GotyeAPI.GetInstance().Log(& Login Success ~ &);
getRoomList();
gotyeLogin();
GotyeAPI.GetInstance().Log(& Login Failed ~ code = & + code);
// 注销回调
public void onLogout(GotyeStatusCode code) {
if(code == GotyeStatusCode.CodeForceLogout){
GotyeAPI.GetInstance().Log(& Force Logout Success ~ &);
Debug.LogError(& Gotye Logout Success ~ &);
// 重连回调
public void onReconnecting(GotyeStatusCode code, GotyeUser loginUser){
// 收到消息回调
public override void onReceiveMessage(GotyeMessage message){
//GotyeAPI.GetInstance().Log(& Message receive success | Message is - & + message.Text);
//if(onReciveMessageForShow != null){
if(message.Type == GotyeMessageType.Audio){
DownloadVoiceMessage(message);
onReciveMessageForShow(message);
Debug.LogError(message.Sender.Name + & Message receive success | Message is - & + message.Text);
// 获取聊天室列表
public void getRoomList(){
api.ReqRoomList(0);
// 聊天室列表获取回来后的回调
public override void onGetRoomList(GotyeStatusCode code, int pageIndex, List&GotyeRoom& rooms, List&GotyeRoom& allRoomList){
roomList =
if(CurRoom != null && gotyeAPI.IsInRoom(CurRoom)){
for(int i = 0; i & roomList.C i++){
if( roomList[i].ID.Equals()){
CurRoom = roomList[i];
GotyeStatusCode result = gotyeAPI.EnterRoom(CurRoom);
if(isSendPVPMsg){
SendPVPContent();
// 进入对应聊天室后回调
public override void onEnterRoom(GotyeStatusCode code, GotyeRoom room){
if(code == GotyeStatusCode.CodeOK){
isInRoom =
Debug.LogError(&Enter Room ~~~ &);
//selfInfo.InitSelfData(&&);
onEnterRoomSuccess();
getRoomList();
// 退出聊天室
public void quitRoom(){
if(CurRoom != null && gotyeAPI.IsInRoom(CurRoom)){
gotyeAPI.LeaveRoom (CurRoom);
// 退出聊天室的回调
public override void onLeaveRoom(GotyeStatusCode code, GotyeRoom room){
if(code == GotyeStatusCode.CodeOK){
isInRoom =
// 发送文本消息
public void sendMessage(GotyeMessage message){
if(CurRoom != null && gotyeAPI.IsInRoom(CurRoom)){
gotyeAPI.SendMessage(message);
// 发送消息回调
public override void onSendMessage(GotyeStatusCode code, GotyeMessage message){
if(code == GotyeStatusCode.CodeOK){
onReciveMessageForShow(message);
onSendMsgCDStart();
// -------------------- 分割线
下面是 序列化用户数据类的功能 ---------------------------------
/// &summary&
/// &/summary&
/// &returns&The send user info.&/returns&
public GotyeMessage setSendUserInfo(string content){
selfInfo.InitSelfData(content);
byte[] byteData = SerializeObject(selfInfo);
TransmitUserInfo tu = (TransmitUserInfo)DeserializeObject(byteData);
return GotyeMessage.CreateUserDataMessage(CurRoom,byteData,byteData.Length);
/// &summary&
/// 把对象序列化为字节数组
/// &/summary&
public static byte[] SerializeObject(object obj)
if (obj == null)
//内存实例
MemoryStream ms = new MemoryStream();
//创建序列化的实例
BinaryFormatter formatter = new BinaryFormatter();
formatter.Serialize(ms, obj);//序列化对象,写入ms流中
ms.Position = 0;
//byte[] bytes = new byte[ms.Length];//这个有错误
byte[] bytes = ms.GetBuffer();
ms.Read(bytes, 0, bytes.Length);
ms.Close();
/// &summary&
/// 把字节数组反序列化成对象
/// &/summary&
public static object DeserializeObject(byte[] bytes)
object obj =
if (bytes == null)
//利用传来的byte[]创建一个内存流
MemoryStream ms = new MemoryStream(bytes);
ms.Position = 0;
BinaryFormatter formatter = new BinaryFormatter();
obj = formatter.Deserialize(ms);//把内存流反序列成对象
ms.Close();
// -------------------- 分割线
下面是 发送和接收语音的功能 ---------------------------------
public delegate void SendVoiceMessageDelegate();
public SendVoiceMessageDelegate onStopAllOtherVoiceM
public SendVoiceMessageDelegate onPlayAllOtherVoiceM
// 开始录制语音
public void startTalkREC(){
//stopPlayVoice();
//onStopAllOtherVoiceMsg();
GotyeStatusCode code = gotyeAPI.StartTalk(CurRoom,GotyeWhineMode.GotyeWhineModeDefault,false,30*1000);
// 开始录制语音的回调
public override void onStartTalk(GotyeStatusCode code,GotyeChatTarget target, bool isRealTime){
// 停止录音 此时生成语音消息
public void stopTalkREC(){
Debug.LogError(& ~~~ stopTalkREC ~~~ &);
api.StopTalk();
// 停止录音回调
public override void onStopTalk(GotyeStatusCode code, bool realtime,GotyeMessage message){
Debug.LogError(&onStopTalk , code : & + code);
if(code == GotyeStatusCode.CodeOK){
selfInfo.InitSelfData(&&);
chatExtraData.initData();
message.PutExtraData(SerializeObject(chatExtraData));
gotyeAPI.SendMessage(message);
} else if(code == GotyeStatusCode.CodeVoiceTooShort){
ShowMessage(&说话时间太短,录音失败 ~ &);
[/i][/i][i]ShowMessage[/i][i][i](&录音失败,请重新录音 ~ &);
// 下载语音消息
public void DownloadVoiceMessage(GotyeMessage message){
gotyeAPI.DownloadMediaInMessage(message);
// 下载消息结果回调
public override void onDownloadMediaInMessage(GotyeStatusCode code, GotyeMessage message){
if(code == GotyeStatusCode.CodeOK){
onReciveMessageForShow(message);
// 播放语音消息
public void PlayVoiceMessage(GotyeMessage message){
if(message != null){
onStopAllOtherVoiceMsg();
stopPlayVoice();
gotyeAPI.PlayMessage(message);
// 开始播放语音消息回调
public override void onPlayStart(GotyeStatusCode code,GotyeMessage message){
UIAudioControl.GetInstance().PauseSound();
// 播放进度回馈
public override void onPlaying(GotyeStatusCode code, int position){
// 播放结束回馈
public override void onPlayStop(){
//Debug.LogError(&onPlayStop&);
onPlayAllOtherVoiceMsg();
UIAudioControl.GetInstance().ResumeSound();
// 手动停止播放
public void stopPlayVoice(){
//onPlayAllOtherVoiceMsg();
gotyeAPI.StopPlay();
这里如果亲发现了一些没有的变量,无视吧 是我项目里用到的,看着这个足够你实现发送文字消息,语音消息,附加信息,自定义数据类型,所有操作了 ~
这个脚本绑定到你聊天框上,或者一个不会销毁的&&Object 上面,因为亲加依托一个 mainloop ,就start 里面我要调用&&base.start&&Destroy里要调用 base.Destroy&&这了一定注意
聊天这块本来做的还是挺精致的,但是公司的代码肯定是不能泄露的,只是把自己总结的一些代码放出来,希望可以帮助到大家 ~
最后感谢蛮牛 ~
若发现有不妥之处,还请大神轻喷,非常感谢指正交流 ~&&---- By Lucifer
unity虚拟现实unity3d接入360亲加unity 聊天系统开发;.2unity语音转文字;unity5 demo 下载;unity5.0unity 进度条unity5.2unity5.0unity语音 文字;unity5.4 demo 下载;unity5.0 ngui自适应;unity5.2unity5.3ngui unity5.0;unity ngui进度条;unity5unity5.0 ui text
18:57 上传
点击文件名下载附件
112 Bytes, 下载次数: 180
每日推荐:
72817/5000排名98昨日变化主题帖子积分
日久生情, 积分 2817, 距离下一级还需 2183 积分
日久生情, 积分 2817, 距离下一级还需 2183 积分
蛮牛币6652
在线时间683 小时
好东西一定要收藏,感谢分享
4342/500排名<font color="#FF昨日变化16主题帖子积分
四处流浪, 积分 342, 距离下一级还需 158 积分
四处流浪, 积分 342, 距离下一级还需 158 积分
在线时间187 小时
不使用SetSiblingIndex的话可以使用table的sorting
4363/500排名<font color="#FF昨日变化5主题帖子积分
四处流浪, 积分 363, 距离下一级还需 137 积分
四处流浪, 积分 363, 距离下一级还需 137 积分
在线时间138 小时
我比较刚兴趣的是图文混排,最近项目我正在做
[]: 数媒 被钱袋砸中进医院,看病花了 1
4335/500排名<font color="#FF昨日变化6主题帖子积分
四处流浪, 积分 335, 距离下一级还需 165 积分
四处流浪, 积分 335, 距离下一级还需 165 积分
蛮牛币1048
在线时间113 小时
mark&&学习。。。。。。。。。。。
72289/5000排名<font color="#FF昨日变化1主题帖子积分
日久生情, 积分 2289, 距离下一级还需 2711 积分
日久生情, 积分 2289, 距离下一级还需 2711 积分
蛮牛币5364
在线时间605 小时
没做过,看看思路{:94:}
7排名<font color="#FF昨日变化3主题帖子积分
在线时间137 小时
mark...聊天
9排名<font color="#FF昨日变化5主题帖子积分
蛮牛币1047
在线时间149 小时
我比较刚兴趣的是图文混排,最近项目我正在做
图文混排别急&&我也正在找一个合适方便的方案,弄完就上贴
61223/1500排名<font color="#FF昨日变化3主题帖子积分
蛮牛粉丝, 积分 1223, 距离下一级还需 277 积分
蛮牛粉丝, 积分 1223, 距离下一级还需 277 积分
蛮牛币18013
在线时间423 小时
资源文件正确通过审核,可以安全下载
5902/1000排名<font color="#FF昨日变化4主题帖子积分
熟悉之中, 积分 902, 距离下一级还需 98 积分
熟悉之中, 积分 902, 距离下一级还需 98 积分
蛮牛币1701
在线时间282 小时
Mark一下&&学习学习~
[]: 一个袋子砸在了 qq 头上,qq 赚了 1
9排名<font color="#FF昨日变化5主题帖子积分
蛮牛币1047
在线时间149 小时
资源文件正确通过审核,可以安全下载
??? 什么意思啊 ~
2148/150排名<font color="#FF昨日变化6主题帖子积分
初来乍到, 积分 148, 距离下一级还需 2 积分
初来乍到, 积分 148, 距离下一级还需 2 积分
在线时间59 小时
请问大神什么时候能出个图文混排的
9排名<font color="#FF昨日变化5主题帖子积分
蛮牛币1047
在线时间149 小时
请问大神什么时候能出个图文混排的
尽快&&我计划写个图文混排通用插件, 再等等吧 最近太忙了
61087/1500排名<font color="#FF昨日变化2主题帖子积分
蛮牛粉丝, 积分 1087, 距离下一级还需 413 积分
蛮牛粉丝, 积分 1087, 距离下一级还需 413 积分
在线时间215 小时
用名字排序 即可解决table刷新问题
int index =0;
GameObject SetItemName(GameObject go)
go.name =&Item&+
最后反转&&ol
9排名<font color="#FF昨日变化5主题帖子积分
蛮牛币1047
在线时间149 小时
用名字排序 即可解决table刷新问题
int index =0;
GameObject SetItemName(GameObject go)
我之前发过一个帖子 就用了这样的解决方案&&但是比你这个考虑的情况要多&&你亲自测试过 你这种方案的可行性么?
社区QQ达人
使用QQ帐号登录论坛的用户}

我要回帖

更多关于 unity3d 聊天系统 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信