String Array =(

Раздел, посвящённый всему, что связано с программированием для Редактора Юнити. Скрипты Редактора, Wizards и прочее.

Re: String Array =(

Сообщение burlak 20 окт 2011, 21:58

Конечно:

http://ru.wikipedia.org/wiki/%D0%9D%D0% ... 0%BA%D1%82

вот тут еще абзай про это:
http://msdn.microsoft.com/ru-ru/library ... 0h(v=vs.90).aspx

В общем, строка это объект. При присваивании объекта переменной он не копируется, просто переменная начинает на него ссылаться. Так?
При присваивании строки элементу массива строка так же, не копируется, просто элемент массива начинает на нее ссылаться.
Можно сделать массив и просвоить всем элементам одно и тоже значение. Код который выше это и делает.
С уважением, Дмитрий Бурлаков.
skype: dmitry.burlakov
email: _dmitry.burlakov@gmail.com
Аватара пользователя
burlak
UNITрон
 
Сообщения: 326
Зарегистрирован: 28 янв 2010, 10:21
Откуда: Санкт-Петербург

Re: String Array =(

Сообщение waruiyume 21 окт 2011, 06:55

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

class GuiTest:MonoBehaviour
{
    private int oldInpTas;
    public int newImpTas;
    private string[] text=new string[0];

    void DoMyWindow(int windowID)
    {
        text[windowID] = GUILayout.TextArea(text[windowID], GUILayout.Width(200));
    }

    void Update()
    {
        if(newImpTas!=oldInpTas)
        {
            if (newImpTas < 0) newImpTas = 0;

            string[] tempText = new string[newImpTas];

            if(newImpTas<text.Length)
            {
                for (int t = 0; t < newImpTas; t++)
                    tempText[t] = text[t];
            }
            else
            {
                for (int t = 0; t < text.Length; t++)
                    tempText[t] = text[t];

                for (int t = text.Length; t < newImpTas; t++)
                    tempText[t] = "";
            }


            text = tempText;
        }
    }

    void OnGUI()
    {
        if(newImpTas>0)
            for (int id = 0; id < text.Length; id++)
                DoMyWindow(id);
    }
}
 
Аватара пользователя
waruiyume
Адепт
 
Сообщения: 6143
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону

Re: String Array =(

Сообщение Jakobs 21 окт 2011, 11:46

waruiyume писал(а):Если ещё нужно.
Синтаксис:
Используется csharp
using UnityEngine;

class GuiTest:MonoBehaviour
{
    private int oldInpTas;
    public int newImpTas;
    private string[] text=new string[0];

    void DoMyWindow(int windowID)
    {
        text[windowID] = GUILayout.TextArea(text[windowID], GUILayout.Width(200));
    }

    void Update()
    {
        if(newImpTas!=oldInpTas)
        {
            if (newImpTas < 0) newImpTas = 0;

            string[] tempText = new string[newImpTas];

            if(newImpTas<text.Length)
            {
                for (int t = 0; t < newImpTas; t++)
                    tempText[t] = text[t];
            }
            else
            {
                for (int t = 0; t < text.Length; t++)
                    tempText[t] = text[t];

                for (int t = text.Length; t < newImpTas; t++)
                    tempText[t] = "";
            }


            text = tempText;
        }
    }

    void OnGUI()
    {
        if(newImpTas>0)
            for (int id = 0; id < text.Length; id++)
                DoMyWindow(id);
    }
}
 



Спасибо, я приблизительно так и сделал =), и все равно не покидает чувство что, что-то не так =)
Аватара пользователя
Jakobs
UNIт
 
Сообщения: 103
Зарегистрирован: 08 янв 2010, 01:09
Откуда: Киев, Украина
  • Сайт
  • ICQ

Re: String Array =(

Сообщение Guyver 21 окт 2011, 14:21

а именно эрей критичен?

почему бы не юзать
List<string>

или

Dictionary<int, string> если у строк есть айдишки и они не линейные
Xcombat: 3D шутер на летающих тарелках!
Аватара пользователя
Guyver
UNIверсал
 
Сообщения: 392
Зарегистрирован: 21 июл 2010, 08:04
Откуда: Челябинск

Re: String Array =(

Сообщение Jakobs 31 окт 2011, 19:52

waruiyume писал(а):Если ещё нужно.
Синтаксис:
Используется csharp
using UnityEngine;

class GuiTest:MonoBehaviour
{
    private int oldInpTas;
    public int newImpTas;
    private string[] text=new string[0];

    void DoMyWindow(int windowID)
    {
        text[windowID] = GUILayout.TextArea(text[windowID], GUILayout.Width(200));
    }

    void Update()
    {
        if(newImpTas!=oldInpTas)
        {
            if (newImpTas < 0) newImpTas = 0;

            string[] tempText = new string[newImpTas];

            if(newImpTas<text.Length)
            {
                for (int t = 0; t < newImpTas; t++)
                    tempText[t] = text[t];
            }
            else
            {
                for (int t = 0; t < text.Length; t++)
                    tempText[t] = text[t];

                for (int t = text.Length; t < newImpTas; t++)
                    tempText[t] = "";
            }


            text = tempText;
        }
    }

    void OnGUI()
    {
        if(newImpTas>0)
            for (int id = 0; id < text.Length; id++)
                DoMyWindow(id);
    }
}
 



сегодня оптимизируя код, немного переосмыслил работы этой функции у себя в коде
сделал все на мнооооого проще

private string[] text=new string[сколько душе угодно];

void DoMyWindow(int windowID)
{
text[windowID] = "" + GUILayout.TextArea(text[windowID], GUILayout.Width(200));
}
Аватара пользователя
Jakobs
UNIт
 
Сообщения: 103
Зарегистрирован: 08 янв 2010, 01:09
Откуда: Киев, Украина
  • Сайт
  • ICQ

Re: String Array =(

Сообщение Cyrax 16 янв 2012, 20:08

подскажите как правильно переделать под GUILayout.Window
в чем ошибка ниже?
Синтаксис:
Используется csharp
//private string[] text=new string[0];
        public Rect[] text = new Rect[0];

     void DoMyWindow(int windowID)
     {
         //text[windowID] =  "" + GUILayout.TextArea(text[windowID], GUILayout.Width(200));
                 text[windowID] = "" + GUILayout.Window(text[windowID], new Rect(10, 20, 100, 20),"My Window");
     }
 
Cyrax
UNец
 
Сообщения: 14
Зарегистрирован: 12 окт 2011, 22:08

Re: String Array =(

Сообщение seaman 16 янв 2012, 20:44

К строке прибавляем Rect! Что в итоге хотим получить?
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: String Array =(

Сообщение Cyrax 16 янв 2012, 20:55

да согласен бред получается, а как же все таки правильно сделать чтобы создавались GUILayout.Window
Cyrax
UNец
 
Сообщения: 14
Зарегистрирован: 12 окт 2011, 22:08

Re: String Array =(

Сообщение seaman 16 янв 2012, 20:57

А чем Вам пример в справке не угодил?
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: String Array =(

Сообщение Cyrax 16 янв 2012, 21:10

пример в справке мне угодил, пытался скрипт переделать для создания n-го колличества передвигаемых GUILayout.Window. Например при каждом нажатии кнопки создается GUILayout.Window. Неполучается, поэтому и спрашиваю как это реализовать.
Cyrax
UNец
 
Сообщения: 14
Зарегистрирован: 12 окт 2011, 22:08

Пред.

Вернуться в Editor

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

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