forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Unity (http://forum.boolean.name/forumdisplay.php?f=144)
-   -   Фак по Юнити. (http://forum.boolean.name/showthread.php?t=12966)

Lestar 22.02.2013 17:34

Ответ: Фак по Юнити.
 
Код:

var position=  transform.position;
 position.y=(float)Grid.thisTerrain.SampleHeight(transform.position);
 transform.position= position;


burovalex 23.02.2013 09:51

Ответ: Фак по Юнити.
 
Помогите оптимально реализовать задачу.
Есть объект со скриптом, который со временем будет создавать такие же объекты с таким же скриптом.
Как лучше задавать значения в новом скрипте?
Т.е. у меня будет допустим один объект трава, второй объект дерево. И они будут размножаться.
Мой вариант такой, при создании нового объекта, в новый скрипт передавать только один параметр (допустим plantType). А при инициализации скрипта делать выборку по plantType.
Мой вариант

PHP код:

... : MonoBehaviour
{
 
enum eType {Grass1=1Tree1Tree2};
 
enum eDensity {Grass1 1Tree1 2};
 
enum eLife {Grass1 3000Tree1 20000};

void Start()
{
if (
plantType eType.Grass1)
{
thisDensity eDensity.Grass1;
thisLife eLife.Grass1;
}
}



Но не удобно что для каждого нового типа придётся дописывать немало строк...
Есть предложения?

pax 23.02.2013 10:05

Ответ: Фак по Юнити.
 
Что-то вроде?
PHP код:

... : MonoBehaviour
{
 public 
enum Type {Grass1=1Tree1Tree2};
 public 
enum Density {Grass1 1Tree1 2};
 public 
enum Life {Grass1 3000Tree1 20000};

public static ... 
Create(string ...nameType typeDensity densityLife life )
{
     var 
myNew... = new GameObject(...name).AddComponent<...>();
     
myNew....thisDensity density;
     
myNew....thisType type;
     
myNew....thisLife  life;
}

void Start()
{

}




burovalex 23.02.2013 12:25

Ответ: Фак по Юнити.
 
Посидел, помозговал и решил сделать отдельный скрипт, хранящий всю нужную инфу, чтобы не таскать её за каждым созданным скриптом.
Получилось так:
Скрипт где хранятся переменные

PHP код:

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;    
    }



А тут в другом скрипте достаю данные из первого:

PHP код:

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 хранится констант..

seaman 23.02.2013 13:03

Ответ: Фак по Юнити.
 
Enum.GetNames(typeof(eType)).Length

burovalex 23.02.2013 14:47

Ответ: Фак по Юнити.
 
Нету такого,даже справка ничего не выдала

Andvrok 23.02.2013 16:44

Ответ: Фак по Юнити.
 
PHP код:

using System

допиши.

seaman 23.02.2013 17:39

Ответ: Фак по Юнити.
 
Цитата:

даже справка ничего не выдала
Не забывайте, что Вы пишете на C# под .NET. Соответственно далеко не все есть в справке Юнити. Используйте MSDN

burovalex 23.02.2013 20:37

Ответ: Фак по Юнити.
 
Вложений: 1
Усёк, спасибо! )

Ребят, помогите, вроде ничего особенного не делал, а проект нагнулся походу. Добавлял меши, префабы, к ним цеплял скрипты. Ошибок не показывает а при запуске пишет исправьте перед запуском.

Потом нажал Build and Run и тут у меня высыпалось такое (рисунок в аттаче)
Пробовал удалить добавленные префабы, не помогло..
Пиз*ец, удалил скрипты, проверил - ошибка, закрыл без сохранения, а скрипты всё равно удалились, и ошибка осталась :"(

Нашёл скрипты в Saves/Data/Managed/скрипты. Но они какието другие, в моно ничего по ним не показывает, можно както восстановить???

pax 23.02.2013 20:53

Ответ: Фак по Юнити.
 
Интересная ошибка, никогда такую не видел...

burovalex 23.02.2013 20:56

Ответ: Фак по Юнити.
 
Вложений: 1
Капец, видимо косяк из-за того что с работы собирался, в спящий режим отправил с включённой прогой.
Скрипты то можно както восстановить из того что на скрине??

Andvrok 23.02.2013 21:55

Ответ: Фак по Юнити.
 
У меня была такая ошибка пару раз. К сожалению, я не нашёл способа восстановить скрипты/префабы.

seaman 24.02.2013 00:54

Ответ: Фак по Юнити.
 
Цитата:

Скрипты то можно както восстановить из того что на скрине??
Reflector

pax 24.02.2013 07:43

Ответ: Фак по Юнити.
 
А каким образом повредились скрипты? они же все в папке Assets должны быть? И зачем ты сделал билд в папку ассетов? Там же все dll, которые подключатся к проекту...

burovalex 24.02.2013 08:34

Ответ: Фак по Юнити.
 
Это стандартный путь где хранятся сохраненные сцены, туда и билды он пихает. А скрипты не повредились.

Цитата:

Потом нажал Build and Run и тут у меня высыпалось такое (рисунок в аттаче)
Пробовал удалить добавленные префабы, не помогло..
Пиз*ец, удалил скрипты, проверил - ошибка, закрыл без сохранения, а скрипты всё равно удалились, и ошибка осталась


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

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot