|
14.02.2013, 02:25
|
#1
|
Разработчик
Регистрация: 07.04.2011
Адрес: Млечный путь, Земля, Европа, Беларусь, Могилев
Сообщений: 391
Написано 94 полезных сообщений (для 319 пользователей)
|
Назначит материал через скрипт
Допустим, есть некий материал. С помощью скрипта создается куб.
Как через скрипт применить на куб материал? По аналогии "EntityTexture (cube,tex)"
__________________
Мечта программиста: запрограммировать процесс программирования.
Всё гениальное - просто.
http://passcall.ucoz.com
|
(Offline)
|
|
14.02.2013, 09:26
|
#2
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Назначит материал через скрипт
public Material myMaterial;
... renderer.material = myMaterial;
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
14.02.2013, 12:47
|
#3
|
Разработчик
Регистрация: 07.04.2011
Адрес: Млечный путь, Земля, Европа, Беларусь, Могилев
Сообщений: 391
Написано 94 полезных сообщений (для 319 пользователей)
|
Ответ: Назначит материал через скрипт
Сообщение от pax
public Material myMaterial; ... renderer.material = myMaterial;
|
то есть для каждого материала нужно создавать паблик?
И renderer - это сам объект или имя объекта?
__________________
Мечта программиста: запрограммировать процесс программирования.
Всё гениальное - просто.
http://passcall.ucoz.com
|
(Offline)
|
|
14.02.2013, 13:11
|
#4
|
Разработчик
Регистрация: 14.12.2008
Адрес: Томск
Сообщений: 530
Написано 270 полезных сообщений (для 883 пользователей)
|
Ответ: Назначит материал через скрипт
renderer - это аналог gameObject.GetComponent<Renderer>().
То есть, допустим, создал ты куб через:
GameObject cube = Instantiate(cubePrefab, position, rotation) as GameObject;
Поменять материал на нем можно через:
cube.renderer.material = someMaterial;, где someMaterial - ссылка на твой материал в проекте.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
14.02.2013, 18:10
|
#5
|
Разработчик
Регистрация: 07.04.2011
Адрес: Млечный путь, Земля, Европа, Беларусь, Могилев
Сообщений: 391
Написано 94 полезных сообщений (для 319 пользователей)
|
Ответ: Назначит материал через скрипт
в общем создал материал с именемен "mt" и присваиваю его кубу, однако куб просто стал фиолетовым
код:
using UnityEngine; using System.Collections; public class NewBehaviourScript : MonoBehaviour { public Material mt; void Start () { GameObject cube = GameObject.CreatePrimitive(PrimitiveType.Cube); cube.transform.position = new Vector3(0,0,5); cube.renderer.material=mt; } void Update () { } }
Видимо, переменной mt надо предварительно присвоить параметры материала "mt", но как это сделать?
__________________
Мечта программиста: запрограммировать процесс программирования.
Всё гениальное - просто.
http://passcall.ucoz.com
|
(Offline)
|
|
14.02.2013, 18:12
|
#6
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Назначит материал через скрипт
Материал надо создать в Project, потом назначить его на переменную mt твоего скрипта перетаскиванием.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
14.02.2013, 20:15
|
#7
|
Разработчик
Регистрация: 07.04.2011
Адрес: Млечный путь, Земля, Европа, Беларусь, Могилев
Сообщений: 391
Написано 94 полезных сообщений (для 319 пользователей)
|
Ответ: Назначит материал через скрипт
Вот еще вопрос:
в проект импортирована некая модель в формате *.3DS
но как её вывести на сцену?
нагуглил такой вариант
public Material mt; public GameObject me; private GameObject go; void Start () { go = (GameObject)Instantiate(me); go.transform.position = new Vector3(0,0,20); go.renderer.material=mt; }
объект появляется, однако на попытку присвоить материал сильно ругается
уже разобрался как выводить объекты на сцену .
__________________
Мечта программиста: запрограммировать процесс программирования.
Всё гениальное - просто.
http://passcall.ucoz.com
Последний раз редактировалось PassCall, 14.02.2013 в 23:52.
|
(Offline)
|
|
17.02.2013, 18:52
|
#8
|
Разработчик
Регистрация: 04.04.2012
Сообщений: 468
Написано 37 полезных сообщений (для 60 пользователей)
|
Ответ: Назначит материал через скрипт
Не хватает только не публичного присвоения материала. Подскажите как это сделать.
К примеру есть:
public Material mt;
И материал в проекте "NewMaterial"
И сразу по теме вопрос. Нашел прикольный примерчик функции Lerp
public class FX1 : MonoBehaviour {
public Color colorStart = Color.red;
public Color colorEnd = Color.green;
public float duration = 1f;
public Renderer thisRenderer;
public float lerp;
void Start ()
{
thisRenderer = GetComponent<Renderer>();
thisRenderer.material.shader = Shader.Find("Specular");
}
// Update is called once per frame
void Update () {
lerp = Mathf.PingPong (Time.time, duration) / duration;
thisRenderer.material.color = Color.Lerp(colorStart,colorEnd,lerp) ;
}
}
Хотел сделать тоже самое с альфой, но в стандартной диффузии нету альфы,там только RBG.
Подскажите пожалуйста, какой шейдер надо использовать и как в скрипте обратиться к его альфе?
__________________
|
(Offline)
|
|
17.02.2013, 21:17
|
#9
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Назначит материал через скрипт
Transpatent/xxx или материалы частиц и менять тинт колор
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 13:43.
|