查看: 1546|回复: 0
打印 上一主题 下一主题

Unity3D脚本中文教程2.37-3

[复制链接]

5552

主题

2

听众

8万

积分

首席设计师

Rank: 8Rank: 8

纳金币
-1
精华
11

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

跳转到指定楼层
楼主
发表于 2012-5-29 14:42:43 |只看该作者 |倒序浏览
Network







类变量

UID9227 帖子247 精华0 积分1474 阅读权限70 在线时间6 小时 注册时间2012-5-8 最后登录2012-5-29 查看 ◆ static var connections : NetworkPlayer[]

描述:所有连接上的玩家。在客户端中,该变量只包含服务器。

function OnGUI() {

if (GUILayout.Button ("Disconnect first player")) {

if (Network.connections.length > 0) {

Debug.Log("Disconnecting: "+Network.connections[0].ipAddress+":"+Network.connections[0].port);

Network.CloseConnection(Network.connections[0], ***e);

}

}

}

◆ static var ConnectionTesterIP:string

描述:用在Network.TestConnection中的连接测试的IP地址。

function ResetIP() {

Network.connectionTesterIP = "127.0.0.1";

Network.connectionTesterPort = 10000;

}

◆ static var connectionTesterPort:int

描述:用在Network.TestConnection中的连接测试的IP端口。

function ResetIP() {

Network.connectionTesterIP = "127.0.0.1";

Network.connectionTesterPort = 10000;

}

◆ static var incomingPassword:string

描述:为这个服务器设置密码(对于进入的连接)。这个必须与客户端上Network.Connect中的相同,传递””表示没有密码(默认)。

function ConnectToServer () {

Network.Connect("127.0.0.1", 25000, "HolyMoly");

}

function LaunchServer () {

Network.incomingPassword = "HolyMoly";

Network.InitializeServer(32, 25000);

}

◆ static var isClinet:bool

描述:如果你的端类型是客户端则返回真。

function OnGUI() {

if (Network.isServer)

GUILayout.Label("Running as a server");

else if (Network.isClient)

GUILayout.Label("Running as a client");

}

◆ static var isMessageQueueRunning:bool

描述:启用或禁用网络消息处理。如果这个被禁用,没有RPC调用或网络视同步会替代。Network level loading有如何使用这个函数的例子。

◆ static var isServer:bool

描述如果你的端类型是服务器端则返回真。

function OnGUI() {

if (Network.isServer)

GUILayout.Label("Running as a server");

else if (Network.isClient)

GUILayout.Label("Running as a client");

}

◆ static var maxConnections:int

描述:设置允许的连接/玩家的最大数量。设置0,以为这没有心的连接可以被建立。但现有保持连接。设置为-1表示最大连接数被设置为与当前开发的连接数相同。在这种情况下,如果一个玩家掉线,那么这个空位还是为他开放的。这个不能设置为高于Network.InitializeServer设置的连接数。

function StartGameNow() {

// 不允许更多玩家

Network.maxConnections = -1;

}

◆ static var minimumAllocatableViewIDs:int

描述:在ViewIDc池中获取或设置服务器分配给客户端ViewID的最小数。当玩家使用新的数字连接并被刷新时,ViewID池被分配给每个玩家。服务器和客户端应该同步这个值。在服务器上设置的更高,将会发送比它们真正需要的更多视ID数到客户端。在客户端上设置更高,意味着它们需要更多视ID。例如当池需要的ID数,服务器中并不包含足够的数量,则会在一行中使用两次。默认值为100。如果一个游戏通过网络实例化大量新的物体,例如每秒超过100个的网络实例,那么这个值需要被设置的更高。

function Awake () {

// 使用更大的视ID池来分配

Network.minimumAllocatableViewIDs = 500;

}

◆ static var natFacilitatorIP:string

描述:NAT穿透辅助的IP地址。通常这与服务器相同。

function ResetIP() {

Network.natFacilitatorIP = "127.0.0.1";

Network.natFacilitatorPort = 10001;

}

static var natFacilitatorPort:int

描述:NAT穿透辅助的端口。

function ResetIP() {

Network.natFacilitatorIP = "127.0.0.1";

Network.natFacilitatorPort = 10001;

}

◆ static var peerType:NetworkPeerType

描述:端类型状态。例如,断开连接,连接,服务器或客户端。

function OnGUI() {

if (Network.peerType == NetworkPeerType.Disconnected)

GUILayout.Label("Not Connected");

else if (Network.peerType == NetworkPeerType.Connecting)

GUILayout.Label("Connecting");

else

GUILayout.Label("Network started");

}

◆ static var player:NetworkPlayer

描述:获取本地NetworkPlayer实例。

◆ static var ProxyIP:string

描述:代理服务器的IP地址。
function Awake(){

Network.proxyIP = "1.1.1.1";

Network.proxyPort = 1111;

}

◆ static var proxyPassword:string

描述:设置代理服务器密码。可以制作你自己的代理服务器。在这种情况下,你也许想用密码保护它。然后Unity玩家必须正确的设置这个值。

function Awake(){

//设置自定义代理服务器地址和密码

Network.proxyIP = "1.1.1.1";

Network.proxyPort = 1111;

Network.proxyPassword = "secret";

}

◆ static var proxyPort:int  描述:代理服务器的端口。

function Awake(){

Network.proxyIP = "1.1.1.1";

Network.proxyPort = 1111;

}

◆ static var sendRate:float  描述:用于所有网络视的默认网络更新发送速率。

function Awake () {

//增加默认的发送速率

Network.sendRate = 25;

}

◆ static var sendRate:float

描述:获取当前网络时间(秒)。这个可以用来比较NetworkMessageInfo中返回的时间。这个实例脚本需要附加到一个带有网络视的物体上,并使网络视监视这个脚本。它管理时间,发送这个物体的同步X位置消息。

var something : float;

var transitTime: double;

function OnSerializeNetworkView (stream : BitStream, info : NetworkMessageInfo) {

var horizontalInput : float = 0.0;

if (stream.isWriting) {//发送

horizontalInput = transform.position.x;

stream.Serialize (horizontalInput);

}

else {//接收

transitTime = Network.time - info.timestamp;

stream.Serialize (horizontalInput);

something = horizontalInput;

}

}

function OnGUI() {

GUILayout.Label("Last transmission time: "+ transitTime);

}

◆ static var useNat:bool
描述:当连接(客户端)或接收连接(服务器)时,我们应该使用NAT穿透吗?如果这个在在服务器上设置,只有具有NAT穿透的客户端才能连接到它。但是如果服务器有一个NAT地址,这个需要打开以便连接。有些路由器不知道如何做NAT穿透。因此对于这些玩家唯一的方法就是修改路由器以便打开合适的转发端口(游戏端口)。参考Network.TestConnection和Network.TestConnectionNAT获取如何自动检测端用户的方法。

function OnGUI() {

if (GUILayout.Button ("Start Server"))

{

//如果没有共有IP地址,使用NAT穿透

Network.useNat = !Network.HavePublicAddress();

Network.InitializeServer(32, 25002);

MasterServer.RegisterHost("MyUniqueGameType", "JohnDoes game", "l33t game for all");

}

}

◆ static var useProxy:bool

描述:标示是否需要代理服务器支持,在这种情况下流量通过代理服务器被延迟。代理伺服器是一种与服务器和客户端连接性问题的解决方案。当机器有一个非NAT穿透能力的路由器,其连接的选择非常优先。一个游戏不能没有外部连接(只有客户端在本地网络中)。通过使用代理服务器,该机器可以具有完全的连接性,但是额外的代价是所有的流量都会被延迟。一个没有NAT穿透能力的客户端通过代理能够连接到任何服务器,只要代理服务器正确的设置。官方并不提供代理服务器为公众使用。所以你需要自己建立代理服务器。当然,用共有IP地址设置代理服务器并保证有大量可用带宽是明智的。当作为客户端运行时,只要启用Network .useProxy就可以。想往常昂使用Network . Connect连接到服务器。所有通过代理服务器的流量将被延迟。服务器的外部IP和内部IP还像往常一样工作。这样如果它们位于同一网络中,客户端可以直接连接到它而不需要代理。作为一个服务器运行时,OnServerInitialized(NetworkPlayer)返回一个NetworkPlayer结果表明游戏服务器中转的IP端口,代理服务器分配给游戏服务器的端口是什么。这个是其他客户端可以连接到的IP端口。当连接到服务器时,客户端不会将这个服务器与其他服务器区别对待。严格的说,它们不需要知道这个服务器得到代理服务器的帮助。当使用主服务器时,你不能只依赖于它在使用代理服务器时为服务器注册的IP端口。服务器使用的代理服务器的IP地址和端口,可以防止在数据域的注释中来发送给主服务器。从主服务器接收主机信息的客户端可以去除注释域并查看它是否能够为那个主机使用另一个可选的IP端口。

重要:你不应该同时为连接到它的服务器和客户端启用代理支持,会发生意想不到的事情。





web3D纳金网www.narkii.com/
分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

手机版|纳金网 ( 闽ICP备2021016425号-2/3

GMT+8, 2025-6-10 14:57 , Processed in 0.073556 second(s), 28 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部