Скрипт с другого объекта [РЕШЕНО]

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

Скрипт с другого объекта [РЕШЕНО]

Сообщение AngryGrey 19 фев 2013, 03:02

Есть два объекта на одном висит скрипт MainDataBase
Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;

public class MainDataBase : MonoBehaviour {
        public bool[,] figureMask;//Маска текущей фигуры
        public bool[,] tempFigureMask;//Маска заполняемой фигуры
        public int[] turn;//Очередь в заполняемой фигуре
        public int[,] gpsFigure;//Координаты точек "true" в текущей фигуре
        public bool turnOk = false;//Очередь заполнена
        public bool tempFigureOk = false;//Выбранна новая временная фигура
        // Use this for initialization
       
        public void turnFigure(){
                if (tempFigureOk){
                        turn = new int [4];
                        turn[0] = 3;
                        turn[1] = 1;
                        turn[2] = 0;
                        turn[3] = 2;
                        turnOk = true;
                }
        }
       
        void Start () {

        }
       
        // Update is called once per frame
        void Update () {
       
        }
}
 

На другом объекте скрипт SpawnFigure:
Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;

public class SpawnFigure : MonoBehaviour {
        public Transform dady;
        public Transform Unit1;
        public Transform Unit2;
        public Transform Unit3;
        public Transform Unit4;
        private Transform myTransform;
        private MainDataBase MainData;
       
        //Функция вибирает временную фигуру
        public void selectFigure(){
                int rnd = Mathf.RoundToInt(Random.Range(0,3));
                MainData.tempFigureMask = new bool [2,3];              
                if (rnd == 0){
                        MainData.tempFigureMask[0,0] = true;
                        MainData.tempFigureMask[0,1] = true;
                        MainData.tempFigureMask[1,1] = true;
                        MainData.tempFigureMask[1,2] = true;                   
                }
                if (rnd == 1){
                        MainData.tempFigureMask[0,0] = true;
                        MainData.tempFigureMask[0,1] = true;
                        MainData.tempFigureMask[0,2] = true;
                        MainData.tempFigureMask[1,2] = true;   
                }
                if (rnd == 2){
                        MainData.tempFigureMask = new bool [2,2];
                        MainData.tempFigureMask[0,0] = true;
                        MainData.tempFigureMask[0,1] = true;
                        MainData.tempFigureMask[1,0] = true;
                        MainData.tempFigureMask[1,1] = true;                   
                }
                MainData.tempFigureOk = true;
                MainData.turnFigure();
        }
       
        void spawn(){
                if (MainData.turnOk){
                        Transform clone_dady = Instantiate (dady,myTransform.position,Quaternion.identity) as Transform;
                }
        }
        // Use this for initialization
        void Start () {
                myTransform = transform;
                MainData = gameObject.GetComponent("MainDataBase") as MainDataBase;
        }
       
        // Update is called once per frame
        void Update () {
                if (Input.GetMouseButtonDown(0)){
                        selectFigure();
                }
                if (Input.GetMouseButtonDown(1)){
                        spawn();
                }
        }
}
 

При попытке проверить работоспособность, вылетает ошибка "Ссылка объекта не указывает на экземпляр объекта"

Если оба скрипта повесить на один объект, то все работает...
Как наладить связь между скриптами разных объектов?
Последний раз редактировалось AngryGrey 19 фев 2013, 03:22, всего редактировалось 1 раз.
AngryGrey
UNIт
 
Сообщения: 102
Зарегистрирован: 04 фев 2013, 02:58

Re: Скрипт с другого объекта

Сообщение Левш@ 19 фев 2013, 03:07

скрипт SpawnFigure.MainData = gameObject.GetComponent("MainDataBase") as MainDataBase;
Тут проблема, вместо gameObject(который собственный), должна быть ссылка на ГО с другим скритом.
Можно искать его по имени или сразу дать ссылку в инспекторе.
_X.cor.R (Prologue)
Аватара пользователя
Левш@
Адепт
 
Сообщения: 4073
Зарегистрирован: 14 окт 2009, 16:34
Откуда: IBERIA
Skype: bars_levsha
  • Сайт

Re: Скрипт с другого объекта [РЕШЕНО]

Сообщение AngryGrey 19 фев 2013, 03:25

Как же все просто, даже не верится! :) Спасибо!
AngryGrey
UNIт
 
Сообщения: 102
Зарегистрирован: 04 фев 2013, 02:58


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

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

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