Изменение текстуры
seaman Дата: Пн, 30 Мар 2015, 07:42 | Сообщение # 21
Гуру
Сообщений: 1748
Награды:
10
Репутация:
660
Статус: Offline
Цитата
Правда сравнивать текстуры - не самое лучшее решение для производительности.
С чего вдруг. Сравнить два целых числа - что тут может тормозить? Или что, ты думаешь текстуры сравниваются попиксельно?
Сообщение Цитата
Правда сравнивать текстуры - не самое лучшее решение для производительности.
С чего вдруг. Сравнить два целых числа - что тут может тормозить? Или что, ты думаешь текстуры сравниваются попиксельно?Автор - seaman Дата добавления - 30 Мар 2015 в 07:42
игнат Дата: Пн, 30 Мар 2015, 09:00 | Сообщение # 22
Сообщений: 706
Награды:
0
Репутация:
107
Статус: Offline
Да? Ну хорошо тогда...
Правила форума · участник GCC
Сообщение Да? Ну хорошо тогда... Автор - игнат Дата добавления - 30 Мар 2015 в 09:00
GST Дата: Пн, 30 Мар 2015, 12:20 | Сообщение # 23
Сообщений: 15
Награды:
0
Репутация:
0
Статус: Offline
Немного не так, не текстуру материала, а полностью весь материал менять на другой А с этим скриптом что-то не так. Как минимум он не работает. Если прошлые работали, то этот вообще нет.
Сообщение отредактировал GST - Пн, 30 Мар 2015, 12:24
Сообщение Немного не так, не текстуру материала, а полностью весь материал менять на другой А с этим скриптом что-то не так. Как минимум он не работает. Если прошлые работали, то этот вообще нет. Автор - GST Дата добавления - 30 Мар 2015 в 12:20
игнат Дата: Пн, 30 Мар 2015, 13:30 | Сообщение # 24
Сообщений: 706
Награды:
0
Репутация:
107
Статус: Offline
Скрипт вешать на меняемый объект - ссылку с элемента UI тоже на него поставить, соответственно (что бы не плодить ссылки на объекты - одна уже есть у Button). Код
using UnityEngine; using System.Collections; public class СменаМатериала : MonoBehaviour { public Material m1; //назначаете свой материал private Material m0; //--- void Start() { m0 = GetComponent<Renderer>().material;//запоминаем "родной" материал } public void ПоменятьМатериал() { if (GetComponent<Renderer>().material == m0)//если настоящие материал - это "родной" материал, то: { GetComponent<Renderer>().material = m1;//назначаем материал m1 } else//иначе: { GetComponent<Renderer>().material = m0;//назначаем "родной" материал } } }
Справка: http://docs.unity3d.com/ScriptReference/Material.html
Правила форума · участник GCC
Сообщение Скрипт вешать на меняемый объект - ссылку с элемента UI тоже на него поставить, соответственно (что бы не плодить ссылки на объекты - одна уже есть у Button). Код
using UnityEngine; using System.Collections; public class СменаМатериала : MonoBehaviour { public Material m1; //назначаете свой материал private Material m0; //--- void Start() { m0 = GetComponent<Renderer>().material;//запоминаем "родной" материал } public void ПоменятьМатериал() { if (GetComponent<Renderer>().material == m0)//если настоящие материал - это "родной" материал, то: { GetComponent<Renderer>().material = m1;//назначаем материал m1 } else//иначе: { GetComponent<Renderer>().material = m0;//назначаем "родной" материал } } }
Справка: http://docs.unity3d.com/ScriptReference/Material.html Автор - игнат Дата добавления - 30 Мар 2015 в 13:30
GST Дата: Пн, 30 Мар 2015, 15:26 | Сообщение # 25
Сообщений: 15
Награды:
0
Репутация:
0
Статус: Offline
А как он работает? Просто скрипт я повесил, ссылку сделал, но когда нажимаю на кнопку, ничего не происходит.
Сообщение А как он работает? Просто скрипт я повесил, ссылку сделал, но когда нажимаю на кнопку, ничего не происходит. Автор - GST Дата добавления - 30 Мар 2015 в 15:26
игнат Дата: Пн, 30 Мар 2015, 17:21 | Сообщение # 26
Сообщений: 706
Награды:
0
Репутация:
107
Статус: Offline
Материал назначили? Странно, я вреде докомментил потом... перекомментировал.
Правила форума · участник GCC
Сообщение Материал назначили? Странно, я вреде докомментил потом... перекомментировал. Автор - игнат Дата добавления - 30 Мар 2015 в 17:21
GST Дата: Пн, 30 Мар 2015, 17:34 | Сообщение # 27
Сообщений: 15
Награды:
0
Репутация:
0
Статус: Offline
Всё назначил, не работает. У меня такое подозрение, что здесь нет операции для смены материала, скрипт просто запоминает его, но ничего не делает.
Сообщение Всё назначил, не работает. У меня такое подозрение, что здесь нет операции для смены материала, скрипт просто запоминает его, но ничего не делает. Автор - GST Дата добавления - 30 Мар 2015 в 17:34
игнат Дата: Пн, 30 Мар 2015, 17:40 | Сообщение # 28
Сообщений: 706
Награды:
0
Репутация:
107
Статус: Offline
На Button жмякали?
Правила форума · участник GCC
Сообщение На Button жмякали? Автор - игнат Дата добавления - 30 Мар 2015 в 17:40
seaman Дата: Пн, 30 Мар 2015, 17:52 | Сообщение # 29
Гуру
Сообщений: 1748
Награды:
10
Репутация:
660
Статус: Offline
Как я понимаю - он не может привязать кнопку к скрипту.
Сообщение Как я понимаю - он не может привязать кнопку к скрипту. Автор - seaman Дата добавления - 30 Мар 2015 в 17:52
GST Дата: Пн, 30 Мар 2015, 18:06 | Сообщение # 30
Сообщений: 15
Награды:
0
Репутация:
0
Статус: Offline
Нет, просто скрипт не работает. Я использую не button, а toggle. Там видно. Когда программа запускается, скрипт отключен. Потом, когда ставишь флажок, скрипт активируется. Но ничего не происходит. Добавлено (30 Мар 2015, 18:06) --------------------------------------------- А, всё, я понял, когда отправил картинку, нужно использовать ПоменятьТекстуру()... Ясно. Но это Static Parameter, мне он не нужен. Если галочку потом убрать, он остаётся. А мне нужно, чтобы всё возвращалось на место. Можно ли сделать так, чтобы скрипт запускался через dynamic boоl?
Сообщение отредактировал GST - Пн, 30 Мар 2015, 18:42
Сообщение Нет, просто скрипт не работает. Я использую не button, а toggle. Там видно. Когда программа запускается, скрипт отключен. Потом, когда ставишь флажок, скрипт активируется. Но ничего не происходит. Добавлено (30 Мар 2015, 18:06) --------------------------------------------- А, всё, я понял, когда отправил картинку, нужно использовать ПоменятьТекстуру()... Ясно. Но это Static Parameter, мне он не нужен. Если галочку потом убрать, он остаётся. А мне нужно, чтобы всё возвращалось на место. Можно ли сделать так, чтобы скрипт запускался через dynamic boоl? Автор - GST Дата добавления - 30 Мар 2015 в 18:06
игнат Дата: Пн, 30 Мар 2015, 19:23 | Сообщение # 31
Сообщений: 706
Награды:
0
Репутация:
107
Статус: Offline
А зачем такие сложности? P.S.: лично мне как-то сложно придумать логику без update. В таком тяжёлом случае - меняйте материал там, где выключаете скрипт. P.P.S.: что Button, что Toggle - мне без разницы. Или можно с изменением значения добавить вызов той функции (плюсик там нажмите).
Правила форума · участник GCC
Сообщение А зачем такие сложности? P.S.: лично мне как-то сложно придумать логику без update. В таком тяжёлом случае - меняйте материал там, где выключаете скрипт. P.P.S.: что Button, что Toggle - мне без разницы. Или можно с изменением значения добавить вызов той функции (плюсик там нажмите). Автор - игнат Дата добавления - 30 Мар 2015 в 19:23
GST Дата: Пн, 30 Мар 2015, 21:18 | Сообщение # 32
Сообщений: 15
Награды:
0
Репутация:
0
Статус: Offline
В общем я пошёл через долгий и муторный путь, но другого выхода не вижу. Сделал много дублирующихся моделей, наложенных друг на друга, и кнопкой включаю нужную мне, выключая остальные.
Сообщение В общем я пошёл через долгий и муторный путь, но другого выхода не вижу. Сделал много дублирующихся моделей, наложенных друг на друга, и кнопкой включаю нужную мне, выключая остальные. Автор - GST Дата добавления - 30 Мар 2015 в 21:18
seaman Дата: Вт, 31 Мар 2015, 00:15 | Сообщение # 33
Гуру
Сообщений: 1748
Награды:
10
Репутация:
660
Статус: Offline
Цитата
другого выхода не вижу
Скажем так - видеть не хочешь. Слышать тоже...
Сообщение Цитата
другого выхода не вижу
Скажем так - видеть не хочешь. Слышать тоже...Автор - seaman Дата добавления - 31 Мар 2015 в 00:15
GST Дата: Вт, 31 Мар 2015, 13:01 | Сообщение # 34
Сообщений: 15
Награды:
0
Репутация:
0
Статус: Offline
Цитата seaman (
)
Скажем так - видеть не хочешь. Слышать тоже...
Могли бы и при себе свои комментарии оставить. Я тут не за этим, а за помощью. И помог реально только игнат. Другое дело, что я этой помощью не смог воспользоваться, потому что мне трудно в этом разобраться. А намекать мне на мои коммуникативные, и, косвенно, умственные способности, прошу не надо.
Сообщение Цитата seaman (
)
Скажем так - видеть не хочешь. Слышать тоже...
Могли бы и при себе свои комментарии оставить. Я тут не за этим, а за помощью. И помог реально только игнат. Другое дело, что я этой помощью не смог воспользоваться, потому что мне трудно в этом разобраться. А намекать мне на мои коммуникативные, и, косвенно, умственные способности, прошу не надо.Автор - GST Дата добавления - 31 Мар 2015 в 13:01
settip Дата: Сб, 26 Ноя 2016, 11:23 | Сообщение # 35
Сообщений: 4
Награды:
0
Репутация:
0
Статус: Offline
Вот простенький скрипт по смене одного материала на другой кликом по объекту.Код
using UnityEngine; using System.Collections; public class ReplaseMat : MonoBehaviour { public Material[] materials; public int count = 0; void OnMouseDown() { if (count == materials.Length - 1) count = 0; else count++; GetComponent<Renderer <img src="/.s/sm/23/angry.gif" border="0" align="absmiddle" alt="angry" /> ).material = materials[count]; } }
Сообщение отредактировал settip - Сб, 26 Ноя 2016, 11:32
Сообщение Вот простенький скрипт по смене одного материала на другой кликом по объекту.Код
using UnityEngine; using System.Collections; public class ReplaseMat : MonoBehaviour { public Material[] materials; public int count = 0; void OnMouseDown() { if (count == materials.Length - 1) count = 0; else count++; GetComponent<Renderer <img src="/.s/sm/23/angry.gif" border="0" align="absmiddle" alt="angry" /> ).material = materials[count]; } }
Автор - settip Дата добавления - 26 Ноя 2016 в 11:23