Смена текстур на Объекте.(РЕШЕНО)

Программирование на Юнити.

Смена текстур на Объекте.(РЕШЕНО)

Сообщение ColdWorld 11 мар 2011, 01:05

Начал изучать юнити, столкнулся с парочкой проблем - чтоб не писать тут 5 вопросов задам один который касается всего что мне надо .
Помогите со скриптом на JS...
У меня есть 2 массива
допустим
items [0] [0] [0] [1] [0]

text [stol.png] [ru4ka.png] [kartina.png] [zakolka.png] [stul.png]

Цель такова: скрипт кидается на модель, пробегается циклом по 1-му массиву пока не находит цифру -1. Как только находит то берет текстуру со 2-го массива с тем же индексом и применяет на объект. Текстура - это разные предметы с альфой формата png.
Последний раз редактировалось ColdWorld 05 апр 2011, 00:18, всего редактировалось 4 раз(а).
ColdWorld
UNец
 
Сообщения: 18
Зарегистрирован: 11 мар 2011, 00:37

Re: Помогите со скриптиком.

Сообщение Paul Siberdt 11 мар 2011, 03:25

А за что у вас отвечает первый массив? Думаю, проще сделать так:
- У скрипта модели есть всего одна переменная - индекс необходимой текстуры из массива.
- Где-то в сцене есть единственный объект, который содержит массив со списком текстур и много другой полезной всячины.
- Модель запрашивает объект, типа, "мой индекс такой-то, дай нужную текстуру!"
- Объект вежливо отвечает :)

Дла реализации подобного, полезно изучить и выбрать способ реализации по вскусу:
- глобальные классы/переменные
- функции и возвращаемые значения
- справка по GetComponent
- справки по SendMessage и BroadcastMessage
Аватара пользователя
Paul Siberdt
Адепт
 
Сообщения: 5317
Зарегистрирован: 20 июн 2009, 21:24
Откуда: Moscow, Russia
Skype: siberdt
  • Сайт

Re: Помогите со скриптиком.

Сообщение Zaicheg 11 мар 2011, 09:34

ColdWorld писал(а):Цель такова: скрипт кидается на модель, пробегается циклом по 1-му массиву пока не находит цифру -1. Как только находит то берет текстуру со 2-го массива с тем же индексом и применяет на объект. Текстура - это разные предметы с альфой формата png.

Синтаксис:
Используется csharp
int[] myInts = new int[] { 1, 0, 2, -1, 3 };
public Texture2D myTexs = new Texture2D[5];
void Start()
{
        for (int i = 0; i < myInts.Length; i++)
                if (myInts[i] == -1)
                        renderer.material.mainTexture = myTexs[i];
}


Хотя можно и IndexOf воспользоваться вместо перебора
http://msdn.microsoft.com/ru-ru/library ... thods.aspx
Дьяченко Роман
e-mail: _zaicheg.reg@gmail.com
skype: zaicheg12
vkontakte: _vk.com/zaichegq
Работа: _wie3.com _www.sanviz.com
Аватара пользователя
Zaicheg
Адепт
 
Сообщения: 3024
Зарегистрирован: 19 июн 2009, 15:12
Откуда: Череповец

Re: Помогите со скриптиком.

Сообщение ColdWorld 02 апр 2011, 17:25

Подскажите, не могу разобраться.
Как все таки сменить текстуру на объекте ?
Ничего не выходит ....

у меня так
var Texture0 : Texture2D;
renderer.material.mainTexture = Texture0;
Потом перетягиваю текстуру мышкой - все работает нормально .

Но мне нужно чтоб текстуру не перетягивать мышкой.
А так чтоб применилась по имени.
То есть как заставить использовать текстуру kluchik.png ,без всяких движений в инспекторе...
Текстура находиться тут - Assets\Textures\Resource\Cursor
ColdWorld
UNец
 
Сообщения: 18
Зарегистрирован: 11 мар 2011, 00:37

Re: Помогите со скриптиком.

Сообщение Zaicheg 02 апр 2011, 18:48

Метод Resources.Load и смежные
Автор темы, предупреждение -- смените название темы на информативное.
Дьяченко Роман
e-mail: _zaicheg.reg@gmail.com
skype: zaicheg12
vkontakte: _vk.com/zaichegq
Работа: _wie3.com _www.sanviz.com
Аватара пользователя
Zaicheg
Адепт
 
Сообщения: 3024
Зарегистрирован: 19 июн 2009, 15:12
Откуда: Череповец

Re: Смена текстур на Объекте.

Сообщение ColdWorld 02 апр 2011, 20:41

Не могли б подсказать на примере. Пробовал разными способами - ошибок нет как и тестуры - объект просто прозрачный.
Вот скрипт - юзаю его для курсора.

Синтаксис:
Используется javascript
var cursorImage : Texture;

function Start() {
    Screen.showCursor = false;
}

function OnGUI() {
    var mousePos : Vector3 = Input.mousePosition;
    var pos : Rect = Rect(mousePos.x,Screen.height - mousePos.y,cursorImage.width,cursorImage.height);
    GUI.Label(pos,cursorImage);
}
 

Как надо его переписать чтоб он взял текстуру от сюда
Assets\Textures\Resource\Cursor Cursor-2.png
Последний раз редактировалось ColdWorld 02 апр 2011, 22:23, всего редактировалось 4 раз(а).
ColdWorld
UNец
 
Сообщения: 18
Зарегистрирован: 11 мар 2011, 00:37

Re: Смена текстур на Объекте.

Сообщение Golandez 02 апр 2011, 21:33

Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
void Start() {
GameObject go = GameObject.CreatePrimitive(PrimitiveType.Plane);
go.renderer.material.mainTexture = Resources.Load("glass");
}
}
 

Script Reference как и тег syntax никто не отменял.
Ты нужен только тогда,когда нужен.(С)
Сказать спасибо
Аватара пользователя
Golandez
Пилигрим
 
Сообщения: 1637
Зарегистрирован: 06 авг 2009, 13:55
Откуда: Харьков
Skype: lestardigital

Re: Смена текстур на Объекте.

Сообщение ColdWorld 02 апр 2011, 22:01

Зтот скрипт видел.
Но У меня все работает нормально, но если пытаюсь сделать текстуру из скрипта в итоге получаю прозрачный курсор - и ошибок нет.
ColdWorld
UNец
 
Сообщения: 18
Зарегистрирован: 11 мар 2011, 00:37

Re: Смена текстур на Объекте.

Сообщение Order 03 апр 2011, 01:01

Привел бы весь скрипт целиком ...
И что ты хочешь добиться и какие планы на будущее. Возможно по другому подходить нужно
Добавить rusorder в Skype , _juc4you@mail.ru ;
Платные консультации, программирование ваших проектов Unity3d,C#,IOS,Android.
Скрытый текст:
_ttp://www.youtube.com/watch?v=1m2qTnatSjM&list=UUjcKNvONEUHCILG7QrX1NFg
Order
Старожил
 
Сообщения: 805
Зарегистрирован: 21 фев 2010, 10:34

Re: Смена текстур на Объекте.

Сообщение ColdWorld 03 апр 2011, 12:39

Ну если честно немного офтопа ))
Мы 6 дизайнеров работаем в сфере создания комп игр в одной оч. известной конторе ...
Решили в свободное время сделать игрушку (Поиск предметов).
Программиста у нас нет, поэтому меня перебазировали под программиста - сейчас сижу вот делаю по хелпу так сказать.

Уже сделано очень многое - стартовое меню с загрузкой сейвы ...
Уже собраны до кучи 20 уровней по ним бродить можна )
Теперь осталось дело за менюшкой и курсором.

Теперь по делу:
Для курсора юзаю скрипт который выше я дал ...
Есть глобальная переменная CursorStatus
Есть 6 разных курсоров. - Cursor-1.png Cursor-2.png Cursor-3.png Cursor-4png ..... - лежат тут - Assets\Textures\Resource\Cursor
Вот я подвожу курсору на какой то объект переменная CursorStatus изменяется .
И в этот момент я хочу чтоб курсор сменился ..
То есть мне надо узнать как использовать текстуру с ресурсов.
Точно такая же проблема и с менюшкой - там в 1меш может быть от текстурирован 200 текстурами - не перетягивать их ведь все 200...
ColdWorld
UNец
 
Сообщения: 18
Зарегистрирован: 11 мар 2011, 00:37

Re: Смена текстур на Объекте.

Сообщение Golandez 03 апр 2011, 13:58

"Resources" folders
Ты нужен только тогда,когда нужен.(С)
Сказать спасибо
Аватара пользователя
Golandez
Пилигрим
 
Сообщения: 1637
Зарегистрирован: 06 авг 2009, 13:55
Откуда: Харьков
Skype: lestardigital

Re: Смена текстур на Объекте.

Сообщение Order 03 апр 2011, 20:44

Как вариант отключить курсор , использовать свой, в виде текстуры, на нем менять размеры и текстуры, получать координаты рейкастом или высчитывать по размерам экрана.

Еще идея сделать скрипт на объектах с информацией на смену текстуры и текста. Или ООП подход сделать класс объектов на сцене с описанием.

P.S стукнись в скайп rusorder может чем помогу.
Добавить rusorder в Skype , _juc4you@mail.ru ;
Платные консультации, программирование ваших проектов Unity3d,C#,IOS,Android.
Скрытый текст:
_ttp://www.youtube.com/watch?v=1m2qTnatSjM&list=UUjcKNvONEUHCILG7QrX1NFg
Order
Старожил
 
Сообщения: 805
Зарегистрирован: 21 фев 2010, 10:34

Re: Смена текстур на Объекте.

Сообщение ColdWorld 05 апр 2011, 00:18

Как всегда что то упустил, не пинайте меня - говорю все делаю по справке и сразу такой проектик )
Создал папку Resources/Cursor вкинул текстуры курсора в папку. "Cursor-1.png Cursor-2.png...."

Обратился так - GUI.Label(pos,Resources.Load("Cursor/Cursor-"+Global.CursorStatus));
И все заработало )))
Теперь меняя Global.CursorStatus меняется и сам курсорчик )

Всем спасиб огромное...
Order будут глобальные вопросы буду обращаться )
Пойду ковырять дальше _ )
ColdWorld
UNец
 
Сообщения: 18
Зарегистрирован: 11 мар 2011, 00:37


Вернуться в Скрипты

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

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