|
Unity Мультиплатформенный инструмент для разработки игр |
27.06.2013, 08:10
|
#1081
|
Разработчик
Регистрация: 04.04.2012
Сообщений: 468
Написано 37 полезных сообщений (для 60 пользователей)
|
Ответ: Фак по Юнити.
Блин, я наверное опять где-то туплю...
SetInt SetFloat .. я так и не нашел.
Нашел Insert через него тоже Null Reference
Для полной картины выкидываю части кода (части чтоб в лишнем не копашиться)
Я использую несколько скриптов, один из них основной, который достаёт нужные переменные из остальных
основной скрипт
OnGUI ()
{
GUILayout.BeginHorizontal();
NewProfileName = GUILayout.TextField(NewProfileName, (int)20);
if (GUILayout.Button(DB.text.create))
{
Profile.AllProfiles[0].name.Insert(0,NewProfileName);
};
GUILayout.EndHorizontal();
}
скрипт профиля
public class Profile : MonoBehaviour {
[Serializable]
public class _Profile
{
public string name;
public int RAM, HDD, rankRAM, rankHDD;
public DateTime DateTimeBeginHDD;
}
public static _Profile[] AllProfiles;
void Start ()
{
AllProfiles = new _Profile[2];
}
__________________
|
(Offline)
|
|
27.06.2013, 11:33
|
#1082
|
Разработчик
Регистрация: 14.12.2008
Адрес: Томск
Сообщений: 530
Написано 270 полезных сообщений (для 883 пользователей)
|
Ответ: Фак по Юнити.
Причем тут Insert?
Insert - это вставить в строку какую-то подстроку с определенной позиции.
Вот это:
Profile.AllProfiles[0].name.Insert(0,NewProfileName);
всё-равно, что и вот это:
Profile.AllProfiles[0].name = NewProfileName;
Это никаким боком не относится к сохранению и загрузке!
Чтобы была возможность сохранять и загружать профили, пиши, грубо говоря, так:
public class Profile : MonoBehaviour {
[Serializable]
public class _Profile
{
public string name;
public int RAM, HDD, rankRAM, rankHDD;
public DateTime DateTimeBeginHDD;
}
public static _Profile[] AllProfiles;
void Start ()
{
AllProfiles = new _Profile[2];
}
public void Save() {
PlayerPrefs.SetInt("CountProfiles", AllProfiles.Length);
for (int i=0; i<AllProfiles.Length; i++) {
PlayerPrefs.SetString(i+"_name", AllProfiles[i].name);
PlayerPrefs.SetInt(i+"_RAM", AllProfiles[i].RAM);
// И так далее по списку...
}
}
public void Load() {
AllProfiles = new _Profile[PlayerPrefs.GetInt("CountProfiles")];
for (int i=0; i<AllProfiles.Length; i++) {
AllProfiles[i].name = PlayerPrefs.GetString(i+"_name");
AllProfiles[i].RAM = PlayerPrefs.GetInt(i+"_RAM");
// И так далее по списку...
}
}
После этого можешь использовать методы Load и Save для загрузки и сохранения состояний всех профилей одновременно.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
27.06.2013, 16:05
|
#1083
|
Разработчик
Регистрация: 04.04.2012
Сообщений: 468
Написано 37 полезных сообщений (для 60 пользователей)
|
Ответ: Фак по Юнити.
Мужики выручайте - скоро мозг взорвётся
Вроде ничего такого не делаю...
Вызываю в ГУИ фунцию (временно сделал не статикой, чтобы видеть что с данными):
GUILayout.BeginHorizontal(); NewProfileName = GUILayout.TextField(NewProfileName, (int)20); if (GUILayout.Button(DB.text.create)) { GetComponent<Profile>().CreateNewProfile (NewProfileName); }; GUILayout.EndHorizontal();
А вот в этом скрипте нулл хоть убейся:
using System.Collections.Generic; using System;
public class Profile : MonoBehaviour { [System.Serializable] public class _Profile { public string name; public int RAM, HDD, rankRAM, rankHDD; public DateTime DateTimeBeginHDD; } public _Profile[] AllProfiles; public _Profile CurrentProfile; public int countProfiles; void Start () {
} void Update () {
} public void CreateNewProfile (string NPN) { countProfiles++; AllProfiles = new _Profile[countProfiles]; for (int i=0; i<countProfiles; i++) { print (i); AllProfiles[i].name = NPN; } } }
Хотя по скрину видно что в массиве Есть новый элемент!
__________________
|
(Offline)
|
|
27.06.2013, 16:25
|
#1084
|
Знающий
Регистрация: 08.01.2013
Адрес: Самара
Сообщений: 284
Написано 104 полезных сообщений (для 180 пользователей)
|
Ответ: Фак по Юнити.
AllProfiles[i] не определен. выделить память под массив - не значит определить все его элементы.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
27.06.2013, 17:42
|
#1085
|
Разработчик
Регистрация: 04.04.2012
Сообщений: 468
Написано 37 полезных сообщений (для 60 пользователей)
|
Ответ: Фак по Юнити.
СПАСИБО!
Я уже не первый раз так туплю. Пакс мне уже объяснял. Всё привыкнуть не могу. В старых языках один раз объявил и не перевыделишь уже память..
Т.е. получается AllProfiles[i] = new _Profile[10] - выделяет память под 10 элементов данного типа.
а AllProfile[1] - это уже определение?
__________________
|
(Offline)
|
|
27.06.2013, 22:08
|
#1086
|
Знающий
Регистрация: 08.01.2013
Адрес: Самара
Сообщений: 284
Написано 104 полезных сообщений (для 180 пользователей)
|
Ответ: Фак по Юнити.
AllProfile[1] = new _Profile();
Вот это определение.
Т.е. нужно пробежать циклом по всем элементам массива и определить их.
PS^ В Вашем случае было бы проще вместо
public class _Profile
использовать
public struct _Profile
если бы не нужна была сериализация. С одной стороны структуры по умолчанию определяются дефолтными значениями - не нужен цикл. С другой стороны структуры в Юнити не нормально сериализуются.
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо seaman за это полезное сообщение:
|
|
27.06.2013, 22:20
|
#1087
|
Разработчик
Регистрация: 04.04.2012
Сообщений: 468
Написано 37 полезных сообщений (для 60 пользователей)
|
Ответ: Фак по Юнити.
Еще есть такой вопрос..
Предисловие:
Еще изучая блитц, придумал (может велосипед, но не слышал) как на разные 3д модели использовать различные эффекты, например поднимая предмет он плавно исчезает, подпрыгивает и тд.
И чтобы не заморачиваться с задержкой для эффекта, буфером для действия и т.д. - объект сразу оказывается в инвентаре, меш копируется в скрипт где он анимируется, а оригинал удаляется.
Вопросы:
Нормальный ли такой метод?
И главное, получится ли такой метод использовать в 2Д??
Т.е. нажал на кнопку и в этот момент скопировал текстуру кнопки с надписями рисунками координатами.
__________________
|
(Offline)
|
|
28.06.2013, 10:14
|
#1088
|
Разработчик
Регистрация: 04.04.2012
Сообщений: 468
Написано 37 полезных сообщений (для 60 пользователей)
|
Ответ: Фак по Юнити.
Спасибо!
Когда я отвечал, ты как раз писал, не увидел ответа.
На счет структур вообще полезно. А сериализацией я не пользуюсь, даже не знаю для чего она. Просто с ней показывает массив в инспекторе
А так вроде сериализация позволяет сохранять сцену, типа сохранения игры?
__________________
|
(Offline)
|
|
28.06.2013, 13:04
|
#1089
|
Разработчик
Регистрация: 14.12.2008
Адрес: Томск
Сообщений: 530
Написано 270 полезных сообщений (для 883 пользователей)
|
Ответ: Фак по Юнити.
А так вроде сериализация позволяет сохранять сцену, типа сохранения игры?
|
Ну... Она может использоваться в том числе и для этого. Сериализация - это преобразование объекта в поток байтов. А что с ним дальше делать - это уже ты решаешь. Хочешь - сохраняй в файл в виде бинарника, хочешь - в виде XML, хочешь - передавай по сети, закидывай в базу и т.д.
Имхо, странно ты как-то начал работать с сериализацией, даже не изучив ее.
Вот неплохая статья про сериализацию: http://brain-sharper.blogspot.ru/2012/02/net.html
Прочти. Думаю, многое станет понятно.
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо cahekp за это полезное сообщение:
|
|
29.06.2013, 10:12
|
#1090
|
Разработчик
Регистрация: 04.04.2012
Сообщений: 468
Написано 37 полезных сообщений (для 60 пользователей)
|
Ответ: Фак по Юнити.
Сообщение от burovalex
Еще есть такой вопрос..
Предисловие:
Еще изучая блитц, придумал (может велосипед, но не слышал) как на разные 3д модели использовать различные эффекты, например поднимая предмет он плавно исчезает, подпрыгивает и тд.
И чтобы не заморачиваться с задержкой для эффекта, буфером для действия и т.д. - объект сразу оказывается в инвентаре, меш копируется в скрипт где он анимируется, а оригинал удаляется.
Вопросы:
Нормальный ли такой метод?
И главное, получится ли такой метод использовать в 2Д??
Т.е. нажал на кнопку и в этот момент скопировал текстуру кнопки с надписями рисунками координатами. А дальше копией манипулировать
|
А про мой подход что скажете?
Спасибо! Ссылку сохранил..
PS: ..но для себя усвоил что лучше разбираться с текущими вопросами по проекту, чем хвататься за всё.
__________________
|
(Offline)
|
|
10.07.2013, 00:38
|
#1091
|
Бывалый
Регистрация: 26.07.2009
Сообщений: 785
Написано 362 полезных сообщений (для 995 пользователей)
|
Ответ: Фак по Юнити.
Как определить, обьекты столкнулись на низкой скорости, или с разгона?
|
(Offline)
|
|
10.07.2013, 07:34
|
#1092
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Фак по Юнити.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
10.07.2013, 22:58
|
#1093
|
Бывалый
Регистрация: 26.07.2009
Сообщений: 785
Написано 362 полезных сообщений (для 995 пользователей)
|
Ответ: Фак по Юнити.
Сообщение от pax
|
Я правильно понимаю, что через велосити можно узнать и скорость просто движущегося ригидбоди? Через rigidbody.velocity?
|
(Offline)
|
|
10.07.2013, 23:56
|
#1094
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Фак по Юнити.
Правильно
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
07.08.2013, 00:27
|
#1095
|
Бывалый
Регистрация: 26.07.2009
Сообщений: 785
Написано 362 полезных сообщений (для 995 пользователей)
|
Ответ: Фак по Юнити.
Вопрос, конечно, ламерский, но как реализовать разный угол отскока ригидбоди в одной и той же ситуации? Чтобы добавить непредсказуемости кое-какой. В качестве ригидбоди выступает сфера, колизиться будет об боксы.
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 08:28.
|