我真的被困在某种静止的地狱里,我已经把自己陷进去了。我有一个服务器和客户端。客户要求服务器提供一份大厅列表。客户端为每个大厅创建一个按钮的图形列表。每个大堂按钮都引用了Matchmaking的静态方法JoinLobby,因为这似乎是连接n数量的最简单的方法。
但是,在一个大厅按钮调用JoinLobby (静态)之后,我希望Matchmaking类关闭一些UI元素,这些元素是public,而不是static。如果可能的话,我想避免使这些元素是静态的,因为我使用的是统一,它破坏了使用联合内置的拖放引用创建者的工作流程。
public class LobbyButton{
public Button button;
public Text name;
public void JoinLobby(){
Matchmaking.JoinLobby(name.text);
}
}
public class Matchmaking{
public LobbyList lobbyList; // UI list element
public static void JoinLobby(string name){
JoinServerLobby(name);
lobbyList.Hide(); // can't do this, lobbyList not static
}
}我已经在这种情况下跑了几次,最后总是做一些工作,或完全重做。但我想知道是否有一种更常见的方式来“摆脱”这一静态呼吁。
发布于 2015-09-13 16:25:18
在我看来,你的设计有问题。
基本上,static的意思是,当前成员是类型的一部分,而不是实例,因此混合它们以获得某些结果,看起来很奇怪。
我认为您应该将Matchmaking注入LobbyButton按钮,将其存储为字段并引用非静态JoinLobby。我会将静态方法留给实用程序任务或与特定功能无关的泛型函数。
发布于 2015-09-13 16:20:27
每个大堂按钮都引用了婚介的静态方法JoinLobby,因为这似乎是连接n个大厅按钮的最简单的方法。
那就别那么做。
在具有“大厅按钮”的表单中,保留一个带有Matchmaking实例引用的私有变量。在单击事件中,引用此变量。
您还可以使用按钮的Tag属性为它们提供一个标识符,并将它们全部连接到同一个单击处理程序中。在那里,您可以查看Tag of sender。
https://stackoverflow.com/questions/32551773
复制相似问题