u3d做的第一个test:局域网聊天,移动

using UnityEngine;
using System.Collections;

public class server : MonoBehaviour {
    //端口號
    int port =10000;
    //聊天信息
    string Message = "";
    //移動信息
    string moveinfo = "";
    //滾動視圖位置
    Vector2 scrollPosition;
    // Use this for initialization
    void Start () {

    }

    // Update is called once per frame
    void Update () {

    }
    void OnGUI()
    {
        GUI.skin.label.fontSize = 10;
        switch (Network.peerType)
        {
                //服務器未開啟狀態
            case NetworkPeerType.Disconnected:
                StartServer();
                break;
                //成功連接至服務器端
            case NetworkPeerType.Server:
                Onserver();
                break;
            case NetworkPeerType.Client:
                break;
            case NetworkPeerType.Connecting:
                break;

        }
    }
    void StartServer()
    {
        if (GUILayout.Button("創建本地服務器"))
        {
            NetworkConnectionError error = Network.InitializeServer(10, port, false);
            Debug.Log("連接狀態" + error);
        }
    }
    void Onserver()
    {
        GUILayout.Label("服務器創建完畢,等待客戶端連接.....");
        //得到客戶端連接的數量
        int length = Network.connections.Length;
        for (int i = 0; i < length; i++)
        {
            GUILayout.Label("連接服務器客戶端id" + i);
            GUILayout.Label("連接服務器客戶端ip" + Network.connections[i].ipAddress);
            GUILayout.Label("連接服務器客戶端端口號" + Network.connections[i].port);
        }
        //斷開服務器
        if (GUILayout.Button("斷開服務器"))
        {
            Network.Disconnect();
            Message = "";
            moveinfo = "";
        }
        scrollPosition = GUILayout.BeginScrollView(scrollPosition, GUILayout.Width(200), GUILayout.Height(500));
        GUILayout.Box(Message);
        //GUILayout.EndScrollView();
        //顯示玩家移動信息
        GUILayout.Box(moveinfo);
        GUILayout.EndScrollView();
    }
    //接受消息
    [RPC]
    void RequestMessage(string message, NetworkMessageInfo info)
    {
        Message += "\n" + "發送者" + info.sender + ":" + message;
    }
    [RPC]
    void RequestMove(string message, NetworkMessageInfo info)
    {
        moveinfo += "\n" + "移動人" + info.sender + ":執行了" + message + "移動事件";
    }
}

server 端

client  端

using UnityEngine;
using System.Collections;

public class client : MonoBehaviour {

    string IP = "172.16.120.149";
    int port = 10000;
    string inputMessage = "請輸入信息:";
    //接受到的信息
    string Message = "";
    Vector2 scrollPosition;
    //移動速度
    float speed = 50.0f;
    float rotationSpeed = 100.0f;
    GameObject cube0 = null;
    GameObject cube1 = null;
    // Use this for initialization
	void Start () {
        cube0 = GameObject.Find("Cube0");
        cube1 = GameObject.Find("Cube1");

	}

	// Update is called once per frame
	void Update () {

	}
    void FixedUpdate()
    {
        if (Network.isClient)
        {
            float translation = Input.GetAxis("Vertical");
            float rotation = Input.GetAxis("Horizontal");
            if (translation == 1)
                networkView.RPC("RequestMove", RPCMode.All, "up");
            if (translation == -1)
                networkView.RPC("RequestMove", RPCMode.All, "down");
            if (rotation == -1)
                networkView.RPC("RequestMove", RPCMode.All, "right");
            if (rotation == 1)
                networkView.RPC("RequestMove", RPCMode.All, "left");
        }
    }
    void OnGUI()
    {
        switch (Network.peerType)
        {
            case NetworkPeerType.Disconnected:
                StartConnect();
                break;
            case NetworkPeerType.Server:
                break;
            case NetworkPeerType.Client:
                OnClient();
                break;
            case NetworkPeerType.Connecting:
                break;
        }
    }
    void StartConnect()
    {
        if (GUILayout.Button("加入遊戲"))
        {
            //客戶端開始嘗試連接服務器
            NetworkConnectionError error = Network.Connect(IP, port);
            Debug.Log("連接狀態" + error);
        }
    }
    void OnClient()
    {
        //創建一個滾動視圖,用來顯示聊天信息
        scrollPosition = GUILayout.BeginScrollView(scrollPosition, GUILayout.Width(200), GUILayout.Height(500));
        //顯示聊天信息
        GUILayout.Box(Message);
        //創建水平方向視圖
        GUILayout.BeginHorizontal();
        //編輯輸入內容
        inputMessage = GUILayout.TextArea(inputMessage);
       //發送內容
        if (GUILayout.Button("發送消息"))
        {
            //使用rpc發送內容
            networkView.RPC("RequestMessage", RPCMode.All, inputMessage);
        }
        GUILayout.EndHorizontal();
        //斷開連接
        if (GUILayout.Button("斷開連接"))
        {
            Network.Disconnect();
            Message = "";
        }
        GUILayout.EndScrollView();
    }
    //接受消息
    [RPC]
    void RequestMessage(string message, NetworkMessageInfo info)
    {
        Message += "\n" + "發送者" + info.sender + ":" + message;
    }
    //接受模型移動消息
    [RPC]
    void RequestMove(string message, NetworkMessageInfo info)
    {
        string sender = info.sender.ToString();
        GameObject moveobject = null;
        //自己的移動事件
        if (sender == "-1")
        {
            moveobject = cube0;
        }
        //其他玩家的移動事件
        else
        {
            moveobject = cube1;
        }
        //根據消息判斷事件類型
        int vertical = 0;
        int horizontal = 0;
        if (message == "up")
        {

            vertical = 1;
        }
        if (message == "down")
        {
            vertical = -1;
        }
        if (message == "left")
            horizontal = 1;
        if (message == "right")
            horizontal = -1;
        float translation = vertical * speed * Time.deltaTime;
        float rotation = horizontal * rotationSpeed * Time.deltaTime;
        moveobject.gameObject.transform.Translate(0, 0, translation);
        moveobject.gameObject.transform.Rotate(0, rotation, 0);

    }

}

  要点:需要给对象添加network view组件

u3d做的第一个test:局域网聊天,移动,布布扣,bubuko.com

时间: 2024-10-13 11:40:54

u3d做的第一个test:局域网聊天,移动的相关文章

javase基础学完可以做什么,javase实现局域网聊天室

包含内容:基础语法,面向对象,多线程,IO流,GUI编程,网络编程(udp) 实现功能:局域网群聊,局域网群发文件(还不太完善,只能传输小体积的文本文件) 由于本人也是刚开始学java,而且掌握的不太好,所以代码可能有些臃肿.请谅解 登录界面 群聊界面 代码写一个java文件里了,不太方便阅读. 1 package test; 2 3 import java.awt.*; 4 import java.awt.event.*; 5 import java.io.*; 6 import java.n

Linux socket跨局域网聊天和文件传输

一直想写一个跨局域网聊天和文件传输,以及视频聊天的软件,这两天刚好闲着没啥事就把代码写完了,代码已经上传至github:https://github.com/vinllen/chat 其实之前想法P2P模式,P2P的话必须穿透NAT,现在的NAT有4种模式: 完全圆锥型NAT 受限圆锥型NAT 端口受限圆锥型NAT 对称NAT(双向NAT) 维基百科给出的定义如下: 1.Full cone NAT,亦即著名的一对一(one-to-one)NAT 一旦一个内部地址(iAddr:port1)映射到外

用L脚本语言开发一个简单的局域网聊天程序

#scp #这是一个简单的局域网聊天程序的例子 定义:字符串,string1 定义:字符串,string2 #addr1是对方的地址 #addr2是自己的地址 #如果addr1和addr2相同,就是自己和自己聊天 定义:地址,addr1,127.0.0.1,27015 定义:地址,addr2,127.0.0.1,27015 定义:整数,字节数,0 #在自己的UDP端口上监听 定义:网络连接,conn2,UDP 监听:conn2,addr2 #连接对方的UDP端口 定义:网络连接,conn1,UD

做一个群组聊天页面

要做个群组聊天的页面,参考微信的web版本,大致就是分为左右两列,左边是群组列表,右边是群组中的对话 示例图如下: 这个页面风格是使用ACE做的,再次啧啧下,ACE真TMD强大,这个页面的风格很招人喜欢. 做这个页面刚开始的时候我走了弯路,初步想的是使用iframe,左侧群组聊天页面是页面加载的,右侧的群组对话框是个iframe.然后点击左侧的任意一个群组,右侧的对话iframe就修改src,然后更新对话的时候也超简单,直接iframe重新加载一下就ok了. 但是呢,后来发现,我这样需要写的co

利用KBEngine +U3D 做的一个简单MMO手游Demo

利用KBE +U3D 做的一个简单MMO手游Demo目前只完成到一个普通攻击和一个火球术,  火球术需要点击怪物后才能释放.点击npc后会跳到一个副本.里面有一只半兽人. 欢迎大家来试玩 并提出宝贵意见.http://pan.baidu.com/s/1dDtVjnb 感谢kbe 一直以来的帮助.

java Swing局域网聊天软件+ 情侣电脑钢琴

2013年的时候刚刚看完毕向东老师的黑马程序员教程,对swing产生了很浓厚的兴趣,很多朋友应该和我有同样的感受吧!学了这么久java一直都面对 乌漆麻黑的dos窗口搞,终于能做个窗口了,心里好开心的.像看见了光明似的.记得第一次写个程序弹出个Frame的时候心里真的是很激动的.后来我在Swing中花了很多时间去研究,毕竟没有老师指导所以不知道Swing其实也不值得花那么多时间.对于Swing做为了解就好了.有空余时间看看还不错. 不过虽然在Swing耽误了许多时间,但是也做了点东西玩玩咯. 写

Qt学习心得之网络编程简单的局域网聊天服务端建立

学而不思则罔,思而不学则殆.学习和思考是相辅相成的,通过这几天对网络编程的学习,收获颇丰.接下来我将利用Qt做的一个以TcpIp协议为传输方式的简单的局域网聊天服务端与大家分享下: 首先谈谈我个人对Tcp协议的理解:Tcp就是网上购物,买家和买家之间的物品传递,快递公司的扮演.快递公司将卖家所要寄出的物品进行包装,给予独特的号码,并从卖家获取目的地地址,得知这些明确信息后准确将物品送到买家,买家签收后,卖家通过快递单号查询到买家签收的消息. 其次是这个简单局域网聊天服务器的创建思路.如下图是思路

基于EPOLL模型的局域网聊天室和Echo服务器

一.EPOLL的优点 在Linux中,select/poll/epoll是I/O多路复用的三种方式,epoll是Linux系统上独有的高效率I/O多路复用方式,区别于select/poll.先说select/poll的缺点,以体现epoll的优点. select: (1)可监听的socket受到限制,在32位的系统中,默认最大值为1024. (2)采用轮询方式,当要监听的sock数量很大时,效率低. (3)随着要监听socket数据的增加,要维护一个存放大量fd的数据结构,系统开销太大. pol

简单 《实现局域网聊天室》----待更新...

先运行一个java写的局域网聊天,效果图如下 后使用c#图形修改如下: c#代码: servlet服务端 using System; using System.Collections.Generic; using System.Drawing; using System.Windows.Forms; using System.Net; using System.Net.Sockets; using System.Threading; using System.IO; using System.T