Страница 1 из 1

Доступ метода класса к методу родителя

СообщениеДобавлено: 22 мар 2017, 06:44
bend55omsk
Здравствуйте форумчане, кому есть дело помогите. Итак
В проекте есть сетевая часть - это объект "DefaultClient" со скриптами. Использую TCP. Создаю я так:
В скрипте-родителе (App.cs) есть метод "TcpError".
В скрипте-родителе (App.cs) создаю класс "Client client = new AsTcpClient(host, port, username, authtoken);" по созданию TcpClient.

Но в этом классе есть элемент "tcpClient.BeginConnect (address, port, ConnectCallback, null);".
Метод "ConnectCallback" -дает знать потерялась ли сеть. Что то типа "Tcp: aborting".
И теперь САМОЕ интересное.
Как из созданного класса "Client client = new AsTcpClient(host, port, username, authtoken);" В СКРИПТЕ-родителе (App.cs) запустить метод "TcpError". То есть, как из класса созданного - вызвать метод родителя. Этот интернет ни дает ни какой конкретики, правильно говорят великая помойка...
За помощь заранее спасибо (c#)
class App
Синтаксис:
Используется csharp
public class App : MonoBehaviour {

        public Client client;

       void Awake() {
                DontDestroyOnLoad(transform.gameObject);
            }

            void Start() {
             
            }
            public void TcpError(IAsyncResult result) {
             
            }

        public void Run(Login.Protocol protocol, string host, int port, string username, int authtoken) {
           
                client = new AsyncTcpClient(host, port, username, authtoken);
                client.Start();
              }        
        }
 

Re: В интернете нет ответа

СообщениеДобавлено: 22 мар 2017, 09:22
юnity
А что, если использовать статическую ссылку??
Синтаксис:
Используется csharp
public class App : MonoBehaviour {
        public static App appClass;
        public Client client;

       void Awake() {
                DontDestroyOnLoad(transform.gameObject);
            }

            void Start() {
              appClass = this;
            }
            public void TcpError(IAsyncResult result) {
             
            }

        public void Run(Login.Protocol protocol, string host, int port, string username, int authtoken) {
           
                client = new AsyncTcpClient(host, port, username, authtoken);
                client.Start();
              }        
        }
 

и в классе Client в старте вызвать App.appClass.TcpError(null);//что то там в параметр

Re: В интернете нет ответа

СообщениеДобавлено: 22 мар 2017, 11:07
bend55omsk
юnity писал(а):А что, если использовать статическую ссылку??
Синтаксис:
Используется csharp
public class App : MonoBehaviour {
        public static App appClass;
        public Client client;

       void Awake() {
                DontDestroyOnLoad(transform.gameObject);
            }

            void Start() {
              appClass = this;
            }
            public void TcpError(IAsyncResult result) {
             
            }

        public void Run(Login.Protocol protocol, string host, int port, string username, int authtoken) {
           
                client = new AsyncTcpClient(host, port, username, authtoken);
                client.Start();
              }        
        }
 

и в классе Client в старте вызвать App.appClass.TcpError(null);//что то там в параметр


Спасибо большое за ответ, я тоже подумывал так сделать... Но
Но, не будет ли это сильно влиять на стабильность приложения или игры. Какой вообще максимум таких ссылок-10, 20 или 1000.
Читал статью о глобальных переменных в какой то игре Большой, не более 25 - 30. А сколько раз можно использовать статических ссылок???

Re: В интернете нет ответа

СообщениеДобавлено: 22 мар 2017, 12:55
юnity
Так делают, значит можно, другой информации у меняя по этому поводу нет, рад был ответить земляку.

Re: В интернете нет ответа

СообщениеДобавлено: 22 мар 2017, 16:11
Syberex
bend55omsk писал(а):Спасибо большое за ответ, я тоже подумывал так сделать... Но
Но, не будет ли это сильно влиять на стабильность приложения или игры. Какой вообще максимум таких ссылок-10, 20 или 1000.
Читал статью о глобальных переменных в какой то игре Большой, не более 25 - 30. А сколько раз можно использовать статических ссылок???

Услышали звон, но не знаете где он ;)
На самом деле количество статических переменных как и других ничем не ограничено. Ваши статические переменные будут привязаны к определенному классу,
что значительно сокращает путаницу по сравнению с просто глобальными переменными, о которых могла идти речь. Ну а сколько их надо, зависит от вас и вашего проекта.
Злоупотреблять не надо, но не стоит и городить огород, вместо того, чтобы использовать простой и доступный способ :)