forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Уроки (http://forum.boolean.name/forumdisplay.php?f=145)
-   -   Назначит материал через скрипт (http://forum.boolean.name/showthread.php?t=17881)

PassCall 14.02.2013 02:25

Назначит материал через скрипт
 
Допустим, есть некий материал. С помощью скрипта создается куб.
Как через скрипт применить на куб материал? По аналогии "EntityTexture (cube,tex)"

pax 14.02.2013 09:26

Ответ: Назначит материал через скрипт
 
PHP код:

public Material myMaterial;

...
renderer.material myMaterial


PassCall 14.02.2013 12:47

Ответ: Назначит материал через скрипт
 
Цитата:

Сообщение от pax (Сообщение 252717)
PHP код:

public Material myMaterial;

...
renderer.material myMaterial


то есть для каждого материала нужно создавать паблик?
И renderer - это сам объект или имя объекта?

cahekp 14.02.2013 13:11

Ответ: Назначит материал через скрипт
 
renderer - это аналог gameObject.GetComponent<Renderer>().
То есть, допустим, создал ты куб через:
GameObject cube = Instantiate(cubePrefab, position, rotation) as GameObject;
Поменять материал на нем можно через:
cube.renderer.material = someMaterial;, где someMaterial - ссылка на твой материал в проекте.

PassCall 14.02.2013 18:10

Ответ: Назначит материал через скрипт
 
в общем создал материал с именемен "mt" и присваиваю его кубу, однако куб просто стал фиолетовым

код:
PHP код:

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", но как это сделать?

pax 14.02.2013 18:12

Ответ: Назначит материал через скрипт
 
Материал надо создать в Project, потом назначить его на переменную mt твоего скрипта перетаскиванием.

PassCall 14.02.2013 20:15

Ответ: Назначит материал через скрипт
 
Вложений: 1
Вот еще вопрос:
в проект импортирована некая модель в формате *.3DS

но как её вывести на сцену?
нагуглил такой вариант
PHP код:

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

объект появляется, однако на попытку присвоить материал сильно ругается
Вложение 18781


уже разобрался как выводить объекты на сцену :) .

burovalex 17.02.2013 18:52

Ответ: Назначит материал через скрипт
 
Не хватает только не публичного присвоения материала. Подскажите как это сделать.
К примеру есть:
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.
Подскажите пожалуйста, какой шейдер надо использовать и как в скрипте обратиться к его альфе?

pax 17.02.2013 21:17

Ответ: Назначит материал через скрипт
 
Transpatent/xxx или материалы частиц и менять тинт колор


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

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