|
Unity Мультиплатформенный инструмент для разработки игр |
22.02.2013, 17:34
|
#916
|
Бывалый
Регистрация: 24.05.2011
Адрес: Украина,Харьков
Сообщений: 890
Написано 359 полезных сообщений (для 880 пользователей)
|
Ответ: Фак по Юнити.
var position= transform.position;
position.y=(float)Grid.thisTerrain.SampleHeight(transform.position);
transform.position= position;
__________________
Нам суждено построить мосты и храмы,которых никогда не существовало и не могло существовать в природе.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
23.02.2013, 09:51
|
#917
|
Разработчик
Регистрация: 04.04.2012
Сообщений: 468
Написано 37 полезных сообщений (для 60 пользователей)
|
Ответ: Фак по Юнити.
Помогите оптимально реализовать задачу.
Есть объект со скриптом, который со временем будет создавать такие же объекты с таким же скриптом.
Как лучше задавать значения в новом скрипте?
Т.е. у меня будет допустим один объект трава, второй объект дерево. И они будут размножаться.
Мой вариант такой, при создании нового объекта, в новый скрипт передавать только один параметр (допустим plantType). А при инициализации скрипта делать выборку по plantType.
Мой вариант
... : MonoBehaviour { enum eType {Grass1=1, Tree1, Tree2}; enum eDensity {Grass1 = 1, Tree1 = 2}; enum eLife {Grass1 = 3000, Tree1 = 20000};
void Start() { if (plantType = eType.Grass1) { thisDensity = eDensity.Grass1; thisLife = eLife.Grass1; } }
}
Но не удобно что для каждого нового типа придётся дописывать немало строк...
Есть предложения?
__________________
|
(Offline)
|
|
23.02.2013, 10:05
|
#918
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Фак по Юнити.
Что-то вроде?
... : MonoBehaviour { public enum Type {Grass1=1, Tree1, Tree2}; public enum Density {Grass1 = 1, Tree1 = 2}; public enum Life {Grass1 = 3000, Tree1 = 20000};
public static ... Create(string ...name, Type type, Density density, Life life ) { var myNew... = new GameObject(...name).AddComponent<...>(); myNew....thisDensity = density; myNew....thisType = type; myNew....thisLife = life; }
void Start() {
}
}
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
23.02.2013, 12:25
|
#919
|
Разработчик
Регистрация: 04.04.2012
Сообщений: 468
Написано 37 полезных сообщений (для 60 пользователей)
|
Ответ: Фак по Юнити.
Посидел, помозговал и решил сделать отдельный скрипт, хранящий всю нужную инфу, чтобы не таскать её за каждым созданным скриптом.
Получилось так:
Скрипт где хранятся переменные
using UnityEngine; using System.Collections; using System.Collections.Generic;
public class Database : MonoBehaviour { public enum eType{Grass1=1}; public int eTypeCount=5; public static byte[] plantDensity; public static float[] plantSpreadInterval; public static float[] plantGrowInterval; public static float[] plantSpreadRadius;
void Awake() { plantDensity = new byte[eTypeCount]; plantGrowInterval = new float[eTypeCount]; plantSpreadInterval = new float[eTypeCount]; plantSpreadRadius = new float[eTypeCount]; //Grass 1 int type = (int)eType.Grass1; plantDensity[type] = 1; plantGrowInterval[type] = 10; plantSpreadInterval[type] = 3; plantSpreadRadius[type] = 1; } }
А тут в другом скрипте достаю данные из первого:
switch(plantName) { case "Grass1" : {plantType=(int)Database.eType.Grass1; break;} case "Grass2" : {plantType=(int)Database.eType.Grass1; break;} } //считываем параметры growInterval = Database.plantGrowInterval[plantType]; spreadInterval = Database.plantSpreadInterval[plantType];
Единственное что у меня не получилось, это узнать сколько в enum хранится констант..
__________________
|
(Offline)
|
|
23.02.2013, 13:03
|
#920
|
Знающий
Регистрация: 08.01.2013
Адрес: Самара
Сообщений: 284
Написано 104 полезных сообщений (для 180 пользователей)
|
Ответ: Фак по Юнити.
Enum.GetNames(typeof(eType)).Length
|
(Offline)
|
|
23.02.2013, 14:47
|
#921
|
Разработчик
Регистрация: 04.04.2012
Сообщений: 468
Написано 37 полезных сообщений (для 60 пользователей)
|
Ответ: Фак по Юнити.
Нету такого,даже справка ничего не выдала
__________________
|
(Offline)
|
|
23.02.2013, 16:44
|
#922
|
Бывалый
Регистрация: 26.07.2009
Сообщений: 785
Написано 362 полезных сообщений (для 995 пользователей)
|
Ответ: Фак по Юнити.
|
(Offline)
|
|
23.02.2013, 17:39
|
#923
|
Знающий
Регистрация: 08.01.2013
Адрес: Самара
Сообщений: 284
Написано 104 полезных сообщений (для 180 пользователей)
|
Ответ: Фак по Юнити.
даже справка ничего не выдала
|
Не забывайте, что Вы пишете на C# под .NET. Соответственно далеко не все есть в справке Юнити. Используйте MSDN
|
(Offline)
|
|
23.02.2013, 20:37
|
#924
|
Разработчик
Регистрация: 04.04.2012
Сообщений: 468
Написано 37 полезных сообщений (для 60 пользователей)
|
Ответ: Фак по Юнити.
Усёк, спасибо! )
Ребят, помогите, вроде ничего особенного не делал, а проект нагнулся походу. Добавлял меши, префабы, к ним цеплял скрипты. Ошибок не показывает а при запуске пишет исправьте перед запуском.
Потом нажал Build and Run и тут у меня высыпалось такое (рисунок в аттаче)
Пробовал удалить добавленные префабы, не помогло..
Пиз*ец, удалил скрипты, проверил - ошибка, закрыл без сохранения, а скрипты всё равно удалились, и ошибка осталась
Нашёл скрипты в Saves/Data/Managed/скрипты. Но они какието другие, в моно ничего по ним не показывает, можно както восстановить???
__________________
|
(Offline)
|
|
23.02.2013, 20:53
|
#925
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Фак по Юнити.
Интересная ошибка, никогда такую не видел...
|
(Offline)
|
|
23.02.2013, 20:56
|
#926
|
Разработчик
Регистрация: 04.04.2012
Сообщений: 468
Написано 37 полезных сообщений (для 60 пользователей)
|
Ответ: Фак по Юнити.
Капец, видимо косяк из-за того что с работы собирался, в спящий режим отправил с включённой прогой.
Скрипты то можно както восстановить из того что на скрине??
__________________
|
(Offline)
|
|
23.02.2013, 21:55
|
#927
|
Бывалый
Регистрация: 26.07.2009
Сообщений: 785
Написано 362 полезных сообщений (для 995 пользователей)
|
Ответ: Фак по Юнити.
У меня была такая ошибка пару раз. К сожалению, я не нашёл способа восстановить скрипты/префабы.
|
(Offline)
|
|
24.02.2013, 00:54
|
#928
|
Знающий
Регистрация: 08.01.2013
Адрес: Самара
Сообщений: 284
Написано 104 полезных сообщений (для 180 пользователей)
|
Ответ: Фак по Юнити.
Скрипты то можно както восстановить из того что на скрине??
|
Reflector
|
(Offline)
|
|
24.02.2013, 07:43
|
#929
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Фак по Юнити.
А каким образом повредились скрипты? они же все в папке Assets должны быть? И зачем ты сделал билд в папку ассетов? Там же все dll, которые подключатся к проекту...
|
(Offline)
|
|
24.02.2013, 08:34
|
#930
|
Разработчик
Регистрация: 04.04.2012
Сообщений: 468
Написано 37 полезных сообщений (для 60 пользователей)
|
Ответ: Фак по Юнити.
Это стандартный путь где хранятся сохраненные сцены, туда и билды он пихает. А скрипты не повредились.
Потом нажал Build and Run и тут у меня высыпалось такое (рисунок в аттаче)
Пробовал удалить добавленные префабы, не помогло..
Пиз*ец, удалил скрипты, проверил - ошибка, закрыл без сохранения, а скрипты всё равно удалились, и ошибка осталась
|
__________________
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 08:16.
|