我对python有一个非常烦人的问题。 基本上,我正在为Blender 3D GE创建一个动态多人游戏系统。 由于问题的性质,它不是Blender问题。 这就是我在做的事情:
以下是数据示例:
['a1a1a4', 'NAME13' {'position': {7316: [[-0.23014163970947266, 7.419361591339111, -1.518202424049774], 'Sphere', 'Cube']}}]
['a1a1a4', 'NAME16' {'position': {5982: [[-0.23014163970947266, 4.099361419677734, -1.518202424049774], 'Sphere', 'Cube']}}]
['a1a1a4', 'NAME90' {'position': {7858: [[-0.23014163970947266, 4.659361362457275, -1.518202424049774], 'Sphere', 'Cube']}}]
这是处理代码
for set in data: # for each packaged set of data
print(set)
client_status = set[0]
client_id = set[1]
if client_status == "a1a1a4":
client_dic = set[2]
if client_id == gd["player_name"]:
continue
if client_id not in gd["registered_client_objects"]:
gd["registered_client_objects"][client_id] = {}
continue
#for each type in the client dic
for type in [i for i in client_dic if i == self.plugin_type]:
#if relevant to current plugin
if type in gd["registered_client_objects"][client_id]:
#for the id of each plugin of this type sent from the client
for id in client_dic[type]:
#if the sender plugin isn't registered:
if not id in gd["registered_client_objects"][client_id][type]:
#creates a plugin listener for that sender
create_plugin(client_dic[type],id,type,client_id)
else:
use_data(client_dic[type],id,client_id,type)
else:
gd["registered_client_objects"][client_id][type] = {}
elif client_status == "a1a1a5":
remove_plugin(client_id)
最终结果是我使用ID来匹配某些设置并检索相应的项目以应用一些数据。 重要的部分是处理数据的“使用数据” 这适用于两个客户端,但任何更多,游戏对象开始抖动。我认为这意味着我将数据(位置)分配给它们太快了。 该脚本每秒运行60次,但由于内部的迭代,我可以假设迭代是问题,因为我没有收到延迟。因此: 我怎样才能减慢迭代速度?