找回密码
 点一下
楼主: 1ml

获取当前镜头X,Y轴 如何同步返回的数据

[复制链接]
发表于 2012-9-22 11:01:59 | 显示全部楼层
互通图。
回复

使用道具 举报

发表于 2012-9-22 11:34:53 | 显示全部楼层
不愧是裤子呢,一下就道出了问题关键~~
回复

使用道具 举报

发表于 2012-9-22 12:19:52 | 显示全部楼层

回 1ml 的帖子

1ml:store用来存入缓存 sync用来同步
loop用来检验同步是否完成 之后输出值

我有点问题的 比如现在是玩家1镜头
.......(2012-09-22 06:00)嬀/color]
本地玩家GetLocalPlayer()
这个函数的返回值是“当前游戏玩家”
在“玩家1”的电脑上这个函数返回“玩家1”,在“玩家2”的电脑上这个函数返回“玩家2”......
[jass]
if( GetLocalPlayer() == Player(0) )then
        //DoSomeThing
endif
[/jass]
看上面这段代码
因为只有“玩家1”调用GetLocalPlayer()函数的返回值为“玩家1”Player(0)
所以只有“玩家1”会执行DoSomeThing

我把发送同步信息的代码写到了if( GetLocalPlayer() == p )then里面,所以只有玩家p会发送同步信息,其他玩家只会被动的接受同步信息

而如果我不这么写,那么所有玩家都会发送同步信息,那么谁先把信息同步到其他玩家那里,这个数据就使用谁的(一般都是以主机为准,所以可以通过这个来判断主机)

那么为什么要“同步”呢,直接把本地数据赋给一个变量不可以吗??

自然不可以,因为如果直接把本地数据赋给一个变量,这个数据会是不同步的,使用这个不同步的数据很可能会造成不同步,使玩家掉线

GetCameraTargetPositionX是一个本地函数,它返回的也是一个“本地数据”
对玩家1,它返回玩家1的镜头位置,对玩家2,它返回玩家2的镜头位置......
只要玩家1和玩家2的镜头不是对准同一地方的,那么这个函数就会返回一个不同步的数据
不同步可能导致掉线...并且也不能让一个玩家获得其他玩家的数据
所以我们需要同步这个数据,而不是把这个数据随便赋给一个变量使用

当然,你也可以以不同步的方法使用不同步的数据而不掉线,只要你想清楚要怎么用才不会掉线就行了

另:还有玩家(触发单位)=本地玩家和本地玩家=玩家(触发单位)是不是一样的?

你问的的应该是 == 号(等于),而不是 = 号(赋值)吧...
等于号的左右顺序可以随便换,换来换去都是一样的...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 点一下

本版积分规则

Archiver|移动端|小黑屋|地精研究院

GMT+8, 2024-12-24 03:51 , Processed in 0.067726 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表