Четверг, 14 Ноября 2024, 18:44

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Переменные для Renderer компонентов
labinzevvДата: Среда, 29 Июля 2020, 17:51 | Сообщение # 1
частый гость
Сейчас нет на сайте
Всем привет! Такой вопрос:
есть скрипт для изменения альфаканала материала, в этом скрипте две публичные переменные для
Renderer компонентов. Первый компонент Renderer на родном объекте, а второй добавляю с другого объекта.
При запуске игры, второй компонент из поля исчезает и на его место автоматически присваивается первый компонент.
Пробую добавить второй компонент в ручную уже в запущенной игре- добавляется, а вот работать не хочет. Причем с первым компонентом все ок. Так же первый компонент Renderer.material при запуске игры имеет подпись instance
Может кто подскажет почему это происходит и как с этим бороться?
Вот скрипт: (не полный, то что не по теме вырезал)
Код

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;

public class levelHealthAndDamage : MonoBehaviour
{

    public Renderer rend;                        
    public Renderer rend2;

    void Start()
    {
        rend = GetComponent<Renderer>();          
        rend2 = GetComponent<Renderer>();                   
    }

IEnumerator invisible()                    
                    
    {
        for (float f = 1f; f >= 0.01; f -= 0.03f)                 
        {
            Color color = rend.material.color;                    
            color.a = f;                    
            rend.material.color = color;                           
            yield return new WaitForSeconds(0.05f);                
        }
    }
    IEnumerator invisible2()                    
                    
    {
        for (float f = 1f; f >= 0.01; f -= 0.03f)                  
        {
            Color color1 = rend2.material.color;                  
            color1.a = f;                    
            rend2.material.color = color1;                        
            yield return new WaitForSeconds(0.05f);               
        }
    }
}


3d modeling, unfolding, and texturing. My works: https://vk.com/labinzevv

Сообщение отредактировал labinzevv - Среда, 29 Июля 2020, 17:52
drcrackДата: Среда, 29 Июля 2020, 19:08 | Сообщение # 2
старожил
Сейчас нет на сайте
Цитата
При запуске игры, второй компонент из поля исчезает и на его место автоматически присваивается первый компонент.

Потому что именно это у тебя и написано в методе Start

Цитата
Renderer.material при запуске игры имеет подпись instance

Renderer.material при каждом обращении делает новую копию материала и возвращает ее
Чтобы независимо управлять двумя прозрачностями, эти копии надо сделать в Start и сохранить в полях обьекта

Цитата
как с этим бороться?

Читать документацию


Сообщение отредактировал drcrack - Среда, 29 Июля 2020, 19:11
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг