Воскресенье, 24 Ноября 2024, 06:42

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Как добавить в Static функцию не статические переменные?
alexsilentДата: Воскресенье, 28 Декабря 2014, 14:22 | Сообщение # 1
почти ветеран
Сейчас нет на сайте
Как добавить в Static функцию не статические переменные?
А то стало парить это, иногда очень полезно объявить всем объектам с текущим скриптом что-либо,
но на основе своих внутренних переменных. Статическая функция была бы в этом случае полезна.
Как обойти это ограничение? По крайней мере в Ява скрипте, а как дела с Си шарпом?


Сообщение отредактировал alexsilent - Воскресенье, 28 Декабря 2014, 14:23
RangerДата: Воскресенье, 28 Декабря 2014, 15:57 | Сообщение # 2
почти ветеран
Сейчас нет на сайте
зачем обязательно статический метод?



Сообщение отредактировал Ranger - Воскресенье, 28 Декабря 2014, 16:05
KamiRoninДата: Воскресенье, 28 Декабря 2014, 17:14 | Сообщение # 3
почти ветеран
Сейчас нет на сайте
немного надуманный смысл примера, но принцип вот как реализуется:
Код

public class NonStaticInStatic : MonoBehaviour{

          public GameObject gun; // какая-то публичная переменная в экземпляре класса, не статик (ну например для настройки оружия через инспектор)
          private GameObject mCurrentTarget; // какая-то приватная переменная в экземпляре класса, не статик

          public GameObject target{ // публичная проперть экземпляра класса, не статик
               set {
                    if(value != null){
                         mCurrentTarget = value;
                         gun.transform.LookAt(mCurrentTarget);
                         transform.LookAt(mCurrentTarget);
                         ....
                    }
               }
          }
              
          // статик функция работающая с экземпляром скрипта (класса) и его не статическими переменными
          public static void SetTargets(NonStaticInStatic aOwner, GameObject aTarget){
                if((aOwner == null) || (aOwner.gun == null) || (aTarget == null)) return;
                    
                aOwner.target = aTarget; // вот тут доступ к нестатическим переменным из статического метода    
          }

              
}


Мыслю - значит программирую...
Конструктивная критика - умных ведет к совершенству...
Великие умы обсуждают идеи, средние - обсуждают поступки, а малые - людей.


Сообщение отредактировал KamiRonin - Воскресенье, 28 Декабря 2014, 17:17
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг