Заполнение list Экземплярами класса

Программирование на Юнити.

Заполнение list Экземплярами класса

Сообщение jigsawjigsaw 15 май 2017, 20:39

Здравствуйте. Помогите решить задачу.
есть первый скрипт GameController.cs с глобальным списком Action элементов.
Скрытый текст:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class GameController : MonoBehaviour {
public static List<Action> MyActionList;
// Use this for initialization
void Start () {
List<Action> MyActionList = new List<Action> ();
}
}


И второй скрипт Action который содержит в себе 2 экземпляра класса Action2 и Action3
Скрытый текст:
public class Action : MonoBehaviour {

// Use this for initialization
void Start () {

}

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

}
}

public class Action2 : Action {

// Use this for initialization
void Start () {

}

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

}
}

public class Action3 : Action {

// Use this for initialization
void Start () {

}

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

}
}


Можно ли через главный скрипт Action заполнить список List<Action> MyActionList экземплярами этого класса те Action2 и Action3. И если я создам новый Экземпляр Action4 он тоже автоматически добавится в список. Можно ли реализовать такое?
jigsawjigsaw
UNIт
 
Сообщения: 56
Зарегистрирован: 25 авг 2016, 21:23

Re: Заполнение list Экземплярами класса

Сообщение samana 15 май 2017, 21:03

Меня насторожило следующее
jigsawjigsaw писал(а):И второй скрипт Action который содержит в себе 2 экземпляра класса Action2 и Action3

Разве будут работать несколько классов MonoBeh-а из одного файла? Они ведь должны быть в отдельных.
Аватара пользователя
samana
Адепт
 
Сообщения: 4738
Зарегистрирован: 21 фев 2015, 13:00
Откуда: Днепропетровск

Re: Заполнение list Экземплярами класса

Сообщение Cr0c 15 май 2017, 22:09

samana писал(а):Разве будут работать несколько классов MonoBeh-а из одного файла? Они ведь должны быть в отдельных.

Второй монобех игнорируется, всё верно. Проверил только что.
Аватара пользователя
Cr0c
Адепт
 
Сообщения: 3035
Зарегистрирован: 19 июн 2015, 13:50
Skype: cr0c81

Re: Заполнение list Экземплярами класса

Сообщение samana 15 май 2017, 22:11

Да, игнорируется, я тоже проверил) Но тогда автору темы нет от этих дополнительных классов никакого толка, если к ним нет доступа.
Аватара пользователя
samana
Адепт
 
Сообщения: 4738
Зарегистрирован: 21 фев 2015, 13:00
Откуда: Днепропетровск

Re: Заполнение list Экземплярами класса

Сообщение waruiyume 15 май 2017, 22:11

Всё прекрасно работает, его просто нельзя навесить через инспектор. Делаем AddCompontnt и радуемся.
Аватара пользователя
waruiyume
Адепт
 
Сообщения: 6143
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону

Re: Заполнение list Экземплярами класса

Сообщение Cr0c 15 май 2017, 22:14

waruiyume писал(а):Всё прекрасно работает, его просто нельзя навесить через инспектор. Делаем AddCompontnt и радуемся.

Синтаксис:
Используется csharp
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class script1 : MonoBehaviour {

        void FixedUpdate () {
        Debug.Log("1");
        }
}

public class script2 : MonoBehaviour
{
    void Update()
    {
        Debug.Log("2");
    }
}
 

Второй не работает же.
Аватара пользователя
Cr0c
Адепт
 
Сообщения: 3035
Зарегистрирован: 19 июн 2015, 13:50
Skype: cr0c81

Re: Заполнение list Экземплярами класса

Сообщение waruiyume 15 май 2017, 22:23

waruiyume писал(а):Всё прекрасно работает, его просто нельзя навесить через инспектор. Делаем AddCompontnt и радуемся.

Синтаксис:
Используется csharp
using UnityEngine;

public class Script1 : MonoBehaviour
{
    void Start()
    {
        gameObject.AddComponent<script2>();
    }

    void FixedUpdate()
    {
        Debug.Log("1");
    }
}


public class script2 : MonoBehaviour
{
    void Update()
    {
        Debug.Log("2");
    }
}
 
Аватара пользователя
waruiyume
Адепт
 
Сообщения: 6143
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону

Re: Заполнение list Экземплярами класса

Сообщение Cr0c 15 май 2017, 22:25

Понял, спасибо. Надо экземпляр второго ручками навешивать на объект.
Аватара пользователя
Cr0c
Адепт
 
Сообщения: 3035
Зарегистрирован: 19 июн 2015, 13:50
Skype: cr0c81

Re: Заполнение list Экземплярами класса

Сообщение samana 15 май 2017, 22:36

waruiyume писал(а):Всё прекрасно работает, его просто нельзя навесить через инспектор. Делаем AddCompontnt и радуемся.

Но это если в этом же классе добавить да, получается. А если совершенно в другом классе прописать такой AddComponent со вторым скриптом, то ошибок не возникает, но и компонент не добавляется.
Синтаксис:
Используется csharp
using UnityEngine;

public class Script1 : MonoBehaviour
{
       
}

public class Script2 : MonoBehaviour
{
    void Update()
    {
        Debug.Log(2);
    }
}
 


Синтаксис:
Используется csharp
using UnityEngine;

public class NewBehaviourScript : MonoBehaviour
{
    void Start()
    {
        gameObject.AddComponent<Script2>(); // ничего не происходит
    }
}
Аватара пользователя
samana
Адепт
 
Сообщения: 4738
Зарегистрирован: 21 фев 2015, 13:00
Откуда: Днепропетровск

Re: Заполнение list Экземплярами класса

Сообщение waruiyume 15 май 2017, 22:43



==========================
==========================
Ответ на вопрос TC:
Синтаксис:
Используется csharp
public class Action2 : Action
{
    vois Awake()
    {
        GameController.MyActionList.Add(this);
    }
}
Аватара пользователя
waruiyume
Адепт
 
Сообщения: 6143
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону

Re: Заполнение list Экземплярами класса

Сообщение samana 15 май 2017, 22:51

waruiyume, вы правы. Видимо моя Unity заглючила, перезапустил и заработало корректно.
Аватара пользователя
samana
Адепт
 
Сообщения: 4738
Зарегистрирован: 21 фев 2015, 13:00
Откуда: Днепропетровск


Вернуться в Скрипты

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

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