Как создать статический класс или метод?

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

Re: Как создать статический класс или метод?

Сообщение seaman 02 май 2013, 19:37

А зачем он там будет прописан всегда? Вы что из любого компонента не можете его получить? Что-то Вы не то пытаетесь сделать. Опишите подробнее задачу. Явно все проще.
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: Как создать статический класс или метод?

Сообщение DbIMok 02 май 2013, 20:24

djtoryx писал(а):Да, надо

Синтаксис:
Используется csharp
public static class Extensions {
        public static void test1(this GameObject go, GameObject obj, float Speed) {
                // do what you need
        }
}

public class SomeScript : MonoBehaviour {
        public GameObject to;

        void Start() {
                gameObject.test1(to, 1f);
        }
}
 
правильный вопрос - половина ответа. учитесь формулировать вопросы понятно.
Новости > _Telegram чат @unity3d_ru (11.6k/4.8k online) > _Telegram канал @unity_news (4.8k подписчиков) > Телеграм тема > "Спасибо"
Аватара пользователя
DbIMok
Адепт
 
Сообщения: 6372
Зарегистрирован: 31 июл 2009, 14:05

Re: Как создать статический класс или метод?

Сообщение pod4444 02 май 2013, 21:19

но по сути это будет то же, что и
Синтаксис:
Используется csharp
test1(gameObject, to, 1f);
 
Аватара пользователя
pod4444
Старожил
 
Сообщения: 721
Зарегистрирован: 20 янв 2012, 22:02
Откуда: Воронеж
Skype: pod4444
  • Сайт

Re: Как создать статический класс или метод?

Сообщение DbIMok 02 май 2013, 21:28

pod4444 писал(а):но по сути это будет то же

смотря где этот test1
правильный вопрос - половина ответа. учитесь формулировать вопросы понятно.
Новости > _Telegram чат @unity3d_ru (11.6k/4.8k online) > _Telegram канал @unity_news (4.8k подписчиков) > Телеграм тема > "Спасибо"
Аватара пользователя
DbIMok
Адепт
 
Сообщения: 6372
Зарегистрирован: 31 июл 2009, 14:05

Re: Как создать статический класс или метод?

Сообщение djtoryx 02 май 2013, 23:12

DbIMok писал(а):
djtoryx писал(а):Да, надо

Синтаксис:
Используется csharp
public static class Extensions {
        public static void test1(this GameObject go, GameObject obj, float Speed) {
                // do what you need
        }
}

public class SomeScript : MonoBehaviour {
        public GameObject to;

        void Start() {
                gameObject.test1(to, 1f);
        }
}
 

Спасибо, то что нужно!
Синтаксис:
Используется csharp
 public static void MoveTo(this GameObject gameObject, GameObject obj, float Speed)
        {

            float Sx, Sz;
            Vector3 pos;
            pos = gameObject.transform.position - obj.transform.position;
            if (Math.Abs(pos.x) > 1 && Math.Abs(pos.z) > 1)
            {

                Sx = pos.x / pos.z * Speed * Time.deltaTime;
                Sz = pos.z / pos.x * Speed * Time.deltaTime;
                if (gameObject.transform.position.x > obj.transform.position.x && Sx > 0)
                {
                    Sx = -Sx;
                }
                if (gameObject.transform.position.z > obj.transform.position.z && Sz > 0)
                {
                    Sz = -Sz;
                }
                if (gameObject.transform.position.x < obj.transform.position.x && Sx < 0)
                {
                    Sx = -Sx;
                }
                if (gameObject.transform.position.z < obj.transform.position.z && Sz < 0)
                {
                    Sz = -Sz;
                }
                gameObject.transform.Translate(Sx, 0, Sz);
            }
        }

Если кому интересно.
djtoryx
UNец
 
Сообщения: 25
Зарегистрирован: 19 мар 2013, 19:07

Re: Как создать статический класс или метод?

Сообщение DbIMok 02 май 2013, 23:48

Синтаксис:
Используется csharp
        public static void MoveTo(this GameObject gameObject, GameObject obj, float Speed) {
                float Sx, Sz;
                Vector3 posGO = gameObject.transform.position;
                Vector3 posObj = obj.transform.position;
                Vector3 pos = posGO - posObj;
                if (Math.Abs(pos.x) > 1 && Math.Abs(pos.z) > 1) {
                        Sx = pos.x / pos.z * Speed * Time.deltaTime;
                        Sz = pos.z / pos.x * Speed * Time.deltaTime;
                        if (posGO.x > posObj.x && Sx > 0) Sx = -Sx;
                        if (posGO.z > posObj.z && Sz > 0) Sz = -Sz;
                        if (posGO.x < posObj.x && Sx < 0) Sx = -Sx;
                        if (posGO.z < posObj.z && Sz < 0) Sz = -Sz;
                        gameObject.transform.Translate(Sx, 0, Sz);
                }
        }

так немного быстрее
правильный вопрос - половина ответа. учитесь формулировать вопросы понятно.
Новости > _Telegram чат @unity3d_ru (11.6k/4.8k online) > _Telegram канал @unity_news (4.8k подписчиков) > Телеграм тема > "Спасибо"
Аватара пользователя
DbIMok
Адепт
 
Сообщения: 6372
Зарегистрирован: 31 июл 2009, 14:05

Re: Как создать статический класс или метод?

Сообщение djtoryx 03 май 2013, 00:50

DbIMok писал(а):
Синтаксис:
Используется csharp
        public static void MoveTo(this GameObject gameObject, GameObject obj, float Speed) {
                float Sx, Sz;
                Vector3 posGO = gameObject.transform.position;
                Vector3 posObj = obj.transform.position;
                Vector3 pos = posGO - posObj;
                if (Math.Abs(pos.x) > 1 && Math.Abs(pos.z) > 1) {
                        Sx = pos.x / pos.z * Speed * Time.deltaTime;
                        Sz = pos.z / pos.x * Speed * Time.deltaTime;
                        if (posGO.x > posObj.x && Sx > 0) Sx = -Sx;
                        if (posGO.z > posObj.z && Sz > 0) Sz = -Sz;
                        if (posGO.x < posObj.x && Sx < 0) Sx = -Sx;
                        if (posGO.z < posObj.z && Sz < 0) Sz = -Sz;
                        gameObject.transform.Translate(Sx, 0, Sz);
                }
        }

так немного быстрее

Спасибо :-bd (3A4OT)
djtoryx
UNец
 
Сообщения: 25
Зарегистрирован: 19 мар 2013, 19:07

Re: Как создать статический класс или метод?

Сообщение aler 03 май 2013, 06:04

Синтаксис:
Используется csharp
public class Singleton<T> : MonoBehaviour where T : Singleton<T>
{
    public static T Instance;

    protected void Awake()
    {
        if (Instance != null)
        {
            Debug.LogError(GetType() + " must be alone on scene! Self destruction started! AHAHAHAHA!");
            Destroy(this);
        }
        Instance = this as T;
#if UNITY_EDITOR
        name = "<color=red><b>" + name + "</b></color>";
#endif
        AfterAwake();
    }

    public virtual void AfterAwake()
    {
    }

}
 


Вот мой вариант Singleton'а. Доступ получаете через NameOfClass.Instance. Так же можно сделать свою дополнительную логику в Awake, через public override void AfterAwake()

Извините, вторую страницу не заметил
Аватара пользователя
aler
UNIверсал
 
Сообщения: 351
Зарегистрирован: 20 фев 2011, 17:41

Пред.

Вернуться в Почемучка

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 15