首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >调用静态方法中的非静态方法

调用静态方法中的非静态方法
EN

Stack Overflow用户
提问于 2015-09-13 16:18:00
回答 2查看 677关注 0票数 0

我真的被困在某种静止的地狱里,我已经把自己陷进去了。我有一个服务器和客户端。客户要求服务器提供一份大厅列表。客户端为每个大厅创建一个按钮的图形列表。每个大堂按钮都引用了Matchmaking的静态方法JoinLobby,因为这似乎是连接n数量的最简单的方法。

但是,在一个大厅按钮调用JoinLobby (静态)之后,我希望Matchmaking类关闭一些UI元素,这些元素是public,而不是static。如果可能的话,我想避免使这些元素是静态的,因为我使用的是统一,它破坏了使用联合内置的拖放引用创建者的工作流程。

代码语言:javascript
复制
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
   }
}

我已经在这种情况下跑了几次,最后总是做一些工作,或完全重做。但我想知道是否有一种更常见的方式来“摆脱”这一静态呼吁。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-09-13 16:25:18

在我看来,你的设计有问题。

基本上,static的意思是,当前成员是类型的一部分,而不是实例,因此混合它们以获得某些结果,看起来很奇怪。

我认为您应该将Matchmaking注入LobbyButton按钮,将其存储为字段并引用非静态JoinLobby。我会将静态方法留给实用程序任务或与特定功能无关的泛型函数。

票数 3
EN

Stack Overflow用户

发布于 2015-09-13 16:20:27

每个大堂按钮都引用了婚介的静态方法JoinLobby,因为这似乎是连接n个大厅按钮的最简单的方法。

那就别那么做。

在具有“大厅按钮”的表单中,保留一个带有Matchmaking实例引用的私有变量。在单击事件中,引用此变量。

您还可以使用按钮的Tag属性为它们提供一个标识符,并将它们全部连接到同一个单击处理程序中。在那里,您可以查看Tag of sender

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32551773

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档