zoukankan      html  css  js  c++  java
  • 实现类似QQ对话聊天功能脚本

    var skin : GUISkin;


    var showChat = false;
    private var inputField = "";
    private var display = true;
    private var entries = ArrayList();
    private var scrollPosition : Vector2;
    var userName : String ;
    var chatobject : Transform;
    private var window = Rect(50, 100, 200, 300);

    class ChatEntry
    {
        var sender = "";
        var text = "";    
        var mine = true;
    }

    function Update () {

       var go = GameObject.Find("Network");
       userName = go.GetComponent("NetworkConnection").playerName;

    }


    function CloseChatWindow ()
    {
        showChat = false;
        inputField = "";
        entries = new ArrayList();
    }

    function FocusControl ()
    {
        // We can't select it immediately because the control might not have been drawn yet.
        // Thus it is not known to the system!
        yield;
        yield;
        yield;
        GUI.FocusControl("Chat input field");
    }

    function OnGUI ()
    {
        GUI.skin = skin;
        
        //if (GUILayout.Button(showChat ? "Hide Chat" : "Display Chat"))
        if (GUI.Button(new Rect(Screen.width-100, Screen.height-30, 90, 20), showChat ? "Hide Chat" : "Display Chat"))
        {
            // Focus first element
            if (showChat)
            {    
                CloseChatWindow ();
            }
            else
            {
                showChat = true;
                FocusControl();
            }
        }
        
        if (showChat)
            window = GUI.Window (1, window, GlobalChatWindow, "Chat");
    }

    function GlobalChatWindow (id : int) {
        
        var closeButtonStyle = GUI.skin.GetStyle("close_button");
        if (GUI.Button(Rect (4, 4, closeButtonStyle.normal.background.width, closeButtonStyle.normal.background.height), "", "close_button"))
        {
            CloseChatWindow();
        }
        
        // Begin a scroll view. All rects are calculated automatically -
        // it will use up any available screen space and make sure contents flow correctly.
        // This is kept small with the last two parameters to force scrollbars to appear.
        scrollPosition = GUILayout.BeginScrollView (scrollPosition);

        for (var entry : ChatEntry in entries)
        {
            GUILayout.BeginHorizontal();
            if (!entry.mine)
            {
                GUILayout.FlexibleSpace ();
                GUILayout.Label (entry.text, "chat_rightaligned");
            }
            else
            {
                GUILayout.Label (entry.text, "chat_leftaligned");
                GUILayout.FlexibleSpace ();
            }
            
            GUILayout.EndHorizontal();
            GUILayout.Space(3);
            
        }
        // End the scrollview we began above.
        GUILayout.EndScrollView ();
        
        if (Event.current.type == EventType.keyDown && Event.current.character == " " && inputField.Length > 0)
        {
            //@TODO: This should be dependent on who actually sent the message
            //var mine = entries.Count % 2 == 0;
            ApplyGlobalChatText(userName+": "+""+inputField , 1);
            networkView.RPC("ApplyGlobalChatText", RPCMode.Others, userName+": " + inputField , 0);
            inputField = "";
        }
        GUI.SetNextControlName("Chat input field");
        inputField = GUILayout.TextField(inputField);
        
        GUI.DragWindow();
    }

    @RPC
    function ApplyGlobalChatText (str : String, mine : int)
    {
        var entry = new ChatEntry();
        entry.sender = "Not implemented";
        entry.text = str;
        if (mine == 1) entry.mine = true;
        else entry.mine = false;

        entries.Add(entry);
        
        if (entries.Count > 50)
            entries.RemoveAt(0);
            
        scrollPosition.y = 1000000;    
    }

  • 相关阅读:
    Deep Learning入门视频(下)之关于《感受神经网络》两节中的代码解释
    Deep Learning入门视频(上)_一层/两层神经网络code
    第一百五十三节,封装库--JavaScript,表单验证--备注字数验证
    第一百五十二节,封装库--JavaScript,表单验证--年月日注入
    第一百五十一节,封装库--JavaScript,表单验证--密码确认验证--回答验证--电子邮件验证加自动补全
    第一百五十节,封装库--JavaScript,表单验证--密码验证
    第一百四十九节,封装库--JavaScript,表单验证--验证用户名
    第一百四十八节,封装库--JavaScript,菜单切换
    第一百四十七节,封装库--JavaScript,滑动导航
    第一百四十六节,JavaScript,百度分享保持居中--下拉菜单
  • 原文地址:https://www.cnblogs.com/943711466qq/p/4631590.html
Copyright © 2011-2022 走看看