Показать сообщение отдельно
Старый 09.06.2015, 22:09   #138
EvilOkta
Знающий
 
Аватар для EvilOkta
 
Регистрация: 31.07.2008
Сообщений: 321
Написано 108 полезных сообщений
(для 229 пользователей)
Ответ: Проблемы разработки от EvilOkta

Такой вопрос, может подскажете - есть у меня статический класс который управляет привязкой камеры. Все работает, но в методах в каждой строчке у меня происходит Getcomponent. Визуально видно, что проще один раз инициализировать объект, который используется для поиска элементов, а потом использовать в методах.

Встала проблема - как инициализировать статический класс? Опять могу путать терминологию, но в обычном классе наследнике от Моно есть возможность использовать Start(). Можно что-то подобное сделать в статическом классе, чтобы перед исполнением методов инициализировать поле скрипта ссылкой на объект?

using UnityEngine;
using System.Collections;

public static class 
StaticCameraMagnit {

    public static 
bool MagnitCapturebeMagnit;
    public static 
GameObject FromMagnited;
    private static 
CameraNavigation CameraNav;

    
CameraNav GameObject.Find("CameraNavigate").GetComponent<CameraNavigation>();
    
// вот это действие где нужно прописать для выполнения? Потом методы будут использовать эту ссылку вместо постоянного GetComponent

    
public static void MagnitedCamera(GameObject FocusTarget) {
        if (!
MagnitCapture) {
            if (
GameObject.Find("CameraNavigate").GetComponent<CameraNavigation>().Magnit_Unit!=null) {
                if (
GameObject.Find("CameraNavigate").GetComponent<CameraNavigation>().Magnit_Unit.tag=="Unit Player") {
                    
FromMagnited GameObject.Find("CameraNavigate").GetComponent<CameraNavigation>().Magnit_Unit;
                }
            }
            
GameObject.Find("CameraNavigate").GetComponent<CameraNavigation>().Magnit_Unit FocusTarget;
            
beMagnit GameObject.Find("CameraNavigate").GetComponent<CameraNavigation>().isMagnit;
            if (!
beMagnitGameObject.Find("CameraNavigate").GetComponent<CameraNavigation>().isMagnit true;
        }
        
MagnitCapture true;
    }
    
    public static 
void UnMagnitedCamera() {
        
GameObject.Find("CameraNavigate").GetComponent<CameraNavigation>().Magnit_Unit FromMagnited;
        
GameObject.Find("CameraNavigate").GetComponent<CameraNavigation>().isMagnit beMagnit;
        
MagnitCapture false;
    }

__________________
Области Хаоса - мой новый Youtube проект
(Offline)
 
Ответить с цитированием