我在业余时间在Visual Studio 2013 Express中创建了一个小游戏。这是一款网络游戏,可以在与任何即时消息聊天教程相同的功能级别上传达游戏更新。我提到这一点,因为我想知道多线程是否是问题的一部分。
问题: 我正在尝试在2个表单之间传递变量信息,而我正在使用这样做的常规方法,该方法在该项目的其他几个部分中有效:
OtherFormName.VariableName = New_Definition
在这个例子中,第二个表单(名为Advantages)由第一个表单(名为Player)生成,并在Player表单中读取和更改变量信息。这里的问题是,Advantages表单只能看到加载Player表单时给出的默认值。例如:
Public Class Player
Public cash as integer = 0
Private sub()
cash = 1
Advantages.Show()
End Sub
End Class
第二表格代码:
Public class Advantages
Private Sub
label1.text = Player.cash
End Sub
End Class
在该示例中,无论何时启动表单优势,它都只能永久地将“var”视为0 ,即使在启动“优势”表单之前“var”已更改。它不仅仅是变量,它可能是元素属性,比如试图查看label.text是什么(并且它将返回与启动时相同的值)。
在Advantages表单中,我可以使用相同的语法准确地从其他表单中提取可变数据,并且我已经在一个新的空白项目中测试了这段代码,并且它可以像预期的那样工作。
我尝试创建一个新的空白表单,复制所有数据以确保它不是我在最初创建它时犯的错误。结果是一样的。它似乎与Player代码相关联,因为它可以从多个测试表单中完全复制。
正如标题所暗示的那样,玩家形式在其自己的空间中运行,并且它留下了它首次加载时的阴影。
我想在这里粘贴一些代码,但是在成千上万行代码中,我不知道要粘贴什么块。当播放器连接到服务器时,它是否有可能将自身移动到程序的其他部分无法访问的新线程中,甚至是从它启动的?如果是这种情况,我是否需要使用代表在表单之间进行通信?网络通信代码是从我在网上找到的一个示例程序中复制的,我没有自己构建它,所以我担心我不完全理解它是如何运行的。
非常感谢任何指导,希望这是一个非常容易解决的问题。
感谢。