实例教程—“骷髅来袭”ARPG实战课程

默认教学计划
7667人加入学习
(32人评价)
价格 免费
教学计划
课程还未发布,不允许加入和购买

private static NetWorkScript instance;

private static Socket socket;

private static string ip="127.0.0.1";

private static int port=10100;

private byte[] buff;

public static NetWorkScript getInstance(){

if(instance==null){

instance = new NetWorkScript();

}

return instance;

}

 

public void init(){

try{

socket = new socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);

socket.Connect(ip,port);

socket.BeginReceive(buff,0,1024,ScoketFlag.None,ReceiveCallBack,Buff);

Debug.Log("Success");

}

catch{

Debug.Log("Faild");

}

}

 

private static void ReceiveCallBack(IAsyncResult ar){

 

}

[展开全文]

里面定义这么多static,容易造成内存不够用,好处是只要一个对象,访问快

1 首先倒入NGUI

2创建登陆界面----创建登陆按钮

private Socket socket;

public class NetWorkHelper{

private static NetWorkHelper instance;

public static NetWorkHelper getInstance(){

if(instance==null){

instance = new NetWorkHelper();

}

return instance;

}

}

3 创建Socket对象, 初始化Socket,定义IP地址,断口号,捕获异常Try catch

socket = new Scoket(AddressFamily.InterNetWork,SocketType.Stream,ProtocolType.Tcp);

socket.Connect(ip,port);

[展开全文]

Unity与服务器进行连接

 NGUI

网络连接脚本

public class NetWorkScript{

   private static NetWorkScript instance

   private static Socket socket;//

   private string ip="172.0.0.1";//ip

   private int port=10100;//端口号

  private static byte[] buff=new byte[1024];

    public static NetWorkScript getInstance(){

       if(instance==null){

         instance = new 

         init();

NetWorkScript(); 

    }

     return instance;

 }

   public void init(){

try{    

 socket=new Socket(AAddressFanily.InterNetWork,SocketType.Stream,ProtocolType.Tep);//数据流传输.tcp连接

socket.Connect(ip,port);

Debug.Log("服务器连接成功")

socket.BeginReceive(buff,0,1024,SocketFlages.None,ReceiveCallBack,buff)

    }

catch{

 Debug.Log("服务器连接失败");

      }

   }

//监听网络消息,消息读取

 private static viod ReceiveCallBack(IAsyncResult ar){

try{

 int readCount=0;

readCount=socket.EndReceive(ar);

byte[] tenp=new byte[readCount];

Buffer.BlockCopy(buff,0,tenp,0,readCount);

}

catch{

     Debug.Log("网络错误")

  }

socket.BeginReceive(buff,0,1024,SocketFlages.None,ReceiveCallBack,buff)

}

//消息解析

private void readMessage(byte[] message)

   {

   MenoryStream ng=new MonogyStream(massage,0,message.Length);

ByteArry ba=new Bytearry[];

SocketModel Smodel=new SocketModel();

model.type=ba.ReadInt();

model.area=ba.ReadInt();

model.connand=ba.ReadInt();

int length=ba.ReadInt();

nodel.message=ba.ReadUTFBytes((unit)length);

}

 

//定义消息体模型

class SocketModel

{

 public int type {get;set;}//协议区分标识码

 public int area{get;set;}//子模块表示

 public int connand{get;set;}//消息内部协议,区分消息功能

 public string message{get;set;}//消息体

}

 

 

//连接服务器脚本

 

public void OnClick(){

  Debug.Log("申请连接服务器");

  NetWorkScript.getInstance();

}

[展开全文]

1. 需要加载的用户包NGUI

创建UI

1. 在UIroot中建立Anchor,子物体建立Panel(原视频没有讲解从何而来)

2. 建立插件的服务器连接

在Panel中,选择NGUI-》Open the Widget Wizard 。在Template下选择Button。

在Texture中寻找图片资源,创建MenuAtlas图集,再制造一个NGUI自带的字体

3. 为摄像机添加网络链接的脚本NetWorkScript。不能继承自Unity的父类,需要将自动生成的父类伤处

(1)脚本中定义静态的NetWorkScript的变量以及getInstance的函数。

(2)网络链接需要Socket的对象,在初次调用的时候需要使用网络链接。即给他new Socket。

(3)链接服务器需要一个服务器地址以及一个服务器端口号(ip与port变量)

(4)try语句因为服务器没有开或者其它原因没办法链接服务器时捕获异常。

4. 建立ConServer脚本,添加到Button中

(1)定义OnClick回调方法【应该是自动调用的方法】

(2)在OnClick中调用刚才写的链接服务器的静态方法

5. 完成网络消息的监听(在NetWorkScript中的Init)

(1)监听的方法:socket.BeginReceive 

(2)新的回调方法:ReceiveCallBack

    新的byte[]类型的变量buff

(3)回调方法在socket.BeginReceive中被调用,并将信息存储在buff中

6. 定义用于解析的对象:定义新的类ByteArray(主要将字符,int转换为2进制流)

7.返回NetWorkScript文件(27.38)

(1)定义读取消息的的读取长度ReceiveCallBack

(2)将读取的消息从缓存中复制出来,Buffer.blockCopy

(3)定义消息的解析函数(被ReceiveCallBack调用)

7.(29:33)返回NetWork中对网络读取失败的操作

8. 定义readMessage函数

9. 定义SocketModel类

10.返回NetWorkScript类

 

              

[展开全文]

自适应屏幕:创建一个2d UI,选中panel,component->ngui->ui->stretch;选中panel,ngui-> 添加texture

[展开全文]
而大幅度飞 但是速度
efvzzzc
非官方个
[展开全文]