Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Unity > Общие вопросы

Общие вопросы вопросы не попадающие ни в один из доступных разделов

Ответ
 
Опции темы
Старый 23.01.2013, 17:13   #1126
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Вопросы от новичка

public class PlayerControllerMonoBehaviour
{
    public 
int Life 100;

     public static 
PlayerController instance;

     public 
void Awake() {
        
instance this;
     }


потом из любого скрипта

PlayerController.instance.Life -= 5;
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
mauNgerS (23.01.2013)
Старый 23.01.2013, 18:44   #1127
pie
ПроЭктировщик
 
Аватар для pie
 
Регистрация: 04.11.2011
Сообщений: 176
Написано 19 полезных сообщений
(для 64 пользователей)
Ответ: Вопросы от новичка

Всем привет! Я по поводу сортировки массива. Пытаюсь сортировать массив вот так:
public class Data {
	public string param1;
	public string param2;
}
Data[] data;
Data[] data_sort;
После того как data заполнил делаю следующее:
data_sort = data.OrderBy (t=>int.Parse (t.param2)).ToArray ();
В итоге ошибка:
ArgumentNullException: Argument cannot be null.
Parameter name: s
at System.Int32.Parse (System.String s) [0x00000] in <filename unknown>:0
at GeneralMain.<GetData>m__0 (.Data t) [0x00000] in <filename unknown>:0
at System.Linq.SortSequenceContext`2[Data,System.Int32].Initialize (.Data[] elements) [0x00000] in <filename unknown>:0
at System.Linq.QuickSort`1[Data].PerformSort () [0x00000] in <filename unknown>:0
at System.Linq.QuickSort`1+<Sort>c__Iterator21[Data].MoveNext () [0x00000] in <filename unknown>:0
at System.Collections.Generic.List`1[Data].AddEnumerable (IEnumerable`1 enumerable) [0x00000] in <filename unknown>:0
at System.Collections.Generic.List`1[Data]..ctor (IEnumerable`1 collection) [0x00000] in <filename unknown>:0
at System.Linq.Enumerable.ToArray[Data] (IEnumerable`1 source) [0x00000] in <filename unknown>:0
at GeneralMain.GetData (System.String response) [0x00000] in <filename unknown>:0
(Offline)
 
Ответить с цитированием
Старый 23.01.2013, 19:53   #1128
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Вопросы от новичка

data_sort = data.OrderBy (t=>int.Parse (t.param2??"0")).ToArray ();
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 23.01.2013, 20:07   #1129
pie
ПроЭктировщик
 
Аватар для pie
 
Регистрация: 04.11.2011
Сообщений: 176
Написано 19 полезных сообщений
(для 64 пользователей)
Ответ: Вопросы от новичка

Сообщение от pax Посмотреть сообщение
data_sort = data.OrderBy (t=>int.Parse (t.param2??"0")).ToArray ();
Ошибка пропала, но сортировка не происходит.
(Offline)
 
Ответить с цитированием
Старый 23.01.2013, 21:27   #1130
pie
ПроЭктировщик
 
Аватар для pie
 
Регистрация: 04.11.2011
Сообщений: 176
Написано 19 полезных сообщений
(для 64 пользователей)
Ответ: Вопросы от новичка

Оказалось что сортировка происходит - http://ideone.com/IdMyuR.
(Offline)
 
Ответить с цитированием
Старый 24.01.2013, 00:33   #1131
WISHMASTER35
Бывалый
 
Аватар для WISHMASTER35
 
Регистрация: 21.12.2008
Адрес: UA
Сообщений: 878
Написано 105 полезных сообщений
(для 357 пользователей)
Ответ: Вопросы от новичка

Полоса прокрутки вообще страшная штука. С ней даже Space(2) может сделать отступ в 1 пиксель)

Я вот заметил, что мой сериализованный список сохраняется лишь в сцене.
После Revert из префаба все объекты списка не созданы т.е. просто null.
Объекты мои унаследованы от юнитивского Object.
Почему так может происходить?
Создаю их так:
ScriptableObject.CreateInstance(type)
Храню так:
[SerializeField] private List<Block> blockSet = new List<Block>();
(Offline)
 
Ответить с цитированием
Старый 24.01.2013, 00:37   #1132
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Вопросы от новичка

А в префабе объекты есть?

ну а вообще ScriptableObject в ассетах надо сохранять как *.asset
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 24.01.2013, 01:56   #1133
WISHMASTER35
Бывалый
 
Аватар для WISHMASTER35
 
Регистрация: 21.12.2008
Адрес: UA
Сообщений: 878
Написано 105 полезных сообщений
(для 357 пользователей)
Ответ: Вопросы от новичка

pax, видно в префаб и не сохраняется список.
У меня не ScriptableObject, а просто Object. Создавать на каждый объект ассет будет очень не удобно. Нужно в одном списке хранить. В сцене все нормально сохраняется.
(Offline)
 
Ответить с цитированием
Старый 24.01.2013, 07:20   #1134
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Вопросы от новичка

Они только в сцене и сохраняются таким образом, а какой в этом толк? Классы с Serializable атрибутом прекрасно сохраняют списки на префабах.
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 24.01.2013, 15:10   #1135
WISHMASTER35
Бывалый
 
Аватар для WISHMASTER35
 
Регистрация: 21.12.2008
Адрес: UA
Сообщений: 878
Написано 105 полезных сообщений
(для 357 пользователей)
Ответ: Вопросы от новичка

pax, у меня полиморфизм. Обычные классы не сохранялись.
Блин! Даже не знаю что теперь делать(

Я сейчас уже даже не уверен, что я правильно создавал свои объекты.
Эта перегрузка CreateInstance<T>() where T: ScriptableObject Позволяет создавать только наследники ScriptableObject.
В той перегрузки, которой я пользовался ScriptableObject CreateInstance(Type type) нет такой проверки.
А если просто через new создавать, то почему-то ничего не создается т.е. null возвращается. Даже не знаю как это сделано без выбрасывания исключений. В некоторых языках есть фабричные конструкторы, которые могут возвращать черт знает что. В C# о таком не слышал.

Последний раз редактировалось WISHMASTER35, 24.01.2013 в 16:23.
(Offline)
 
Ответить с цитированием
Старый 24.01.2013, 22:18   #1136
WISHMASTER35
Бывалый
 
Аватар для WISHMASTER35
 
Регистрация: 21.12.2008
Адрес: UA
Сообщений: 878
Написано 105 полезных сообщений
(для 357 пользователей)
Ответ: Вопросы от новичка

Ну ладно, попытаюсь вешать все ScriptableObject на один ассет.
Создаю этот ассет из объекта List(:ScriptableObject), все нормально.
List list = ScriptableObject.CreateInstance<List>();
list.name = "New List";
AssetDatabase.CreateAsset(list, "Assets/New List.asset");
Затем добавляю к нему другие объекты ScriptableObject.
AssetDatabase.AddObjectToAsset(newObject, list);
И получается с иерархией полный бред.
Мой New List перемещается вглубь иерархии, а рутовым остается какая-то пустышка с тем же именем New List.
Почему так?
Миниатюры
Нажмите на изображение для увеличения
Название: Безымянный.jpg
Просмотров: 747
Размер:	5.2 Кб
ID:	18528  
(Offline)
 
Ответить с цитированием
Старый 24.01.2013, 22:53   #1137
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Вопросы от новичка

Не мучайся и создавай отдельные ассеты, если они действительно нужны. Как ты потом будешь удалять из такого ассета объекты?
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 24.01.2013, 23:42   #1138
WISHMASTER35
Бывалый
 
Аватар для WISHMASTER35
 
Регистрация: 21.12.2008
Адрес: UA
Сообщений: 878
Написано 105 полезных сообщений
(для 357 пользователей)
Ответ: Вопросы от новичка

pax, да, удаление объекта тоже вопрос. Точнее я не понял как получить список объектов у ассета, чтобы их потом удалить. Хотя они все равно хранятся в моем списке.
Я делаю список блоков для моего MineCraft. Сейчас так все просто и красиво в инспекторе редактируется. На каждый блок создавать ассет, ну совсем не гуд.

Впрочем все равно хотел, чтобы blockset можно было создавать и загружать из вне. Вообщем придется делать своим xml форматом. Жаль только для своего формата инспектор не сделаешь. Придется либо окно редактора создавать, либо блокнотом редактировать)
А сделать загрузчик для своего формата нельзя? Чтобы файл преобразовывался в юнитивский объект, как шрифт. Может в Unity 4 так уже можно?

Подумывал BlockSet писать кодом) Как в MineCraft ModLoader'е. Но тогда из вне уже сложно будет загрузить т.к. придется сначала этот код компилировать. Да и координаты текстурные вручную писать придется.
И загрузка таких кодов может быть довольно опасной. Или можно ограничить возможности этого стороннего кода?
(Offline)
 
Ответить с цитированием
Старый 24.01.2013, 23:48   #1139
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Вопросы от новичка

Сделаешь инспектор, это TextAsset, можешь для него сделать инспектор свой. С четверкой не работал, поэтому не знаю, в третей не слышал, но может можно...
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 25.01.2013, 00:05   #1140
seaman
Знающий
 
Регистрация: 08.01.2013
Адрес: Самара
Сообщений: 284
Написано 104 полезных сообщений
(для 180 пользователей)
Ответ: Вопросы от новичка

И получается с иерархией полный бред.
Мой New List перемещается вглубь иерархии, а рутовым остается какая-то пустышка с тем же именем New List.
Вообще тут все четко и прозрачно. "Пустышка" - это сам ассет. Вы же ему дали имя New List тут:
AssetDatabase.CreateAsset(list, "Assets/New List.asset");
Далее идет объект, добавленный так:
AssetDatabase.AddObjectToAsset(newObject, list);
Далее изначальный лист с тем же именем New List:
list.name = "New List";
Точнее я не понял как получить список объектов у ассета, чтобы их потом удалить. Хотя они все равно хранятся в моем списке.
Записываешь этот список в тот же ассет с четко заданным постоянным именем. Считываешь его первым. Уже из него определяешь что в ассете.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 17:35.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com