2016-10-24 2 views
0

У меня есть два изображения: один со светящейся рамкой и один без. Я хочу создать эффект изображения, светящегося, затухающего светящегося изображения. Мой код:Изменение значения альфа-изображения в Unity3D для создания светящегося эффекта

private Image lightImage; 
private float alpha; 

// Use this for initialization 
void Start() 
{ 

lightImage = GetComponent<Image>(); 
alpha = Time.deltaTime * 10; 

} 

void FixedUpdate() 
{ 

// fade to transparent over 500ms. 
lightImage.CrossFadeAlpha(0.0f, alpha, false); 
// and back over 500ms. 
lightImage.CrossFadeAlpha(1.0f, alpha, false); 
} 

Я не могу заставить его работать, как я хочу, он мигает в и быстро, но это не желательный эффект (медленный переход с течением времени.).

ответ

1
  1. Заменить:alpha = Time.deltaTime * 10;сalpha = 0.5f; И я думаю, вы должны переименовать alpha переменную duration.
  2. Вам не нужно ставить CrossFadeAlpha в FixedUpdate(). Это твин. Его не нужно выполнять через несколько фреймов. Просто положите его в Start().
  3. Установка alpha в абсолютное 0 - это не очень хорошая идея, потому что иногда Unity лечит 0 альфа-объектов, как будто они были отключены, но я не уверен. Если вы столкнулись с этой проблемой, установите для альфы значение очень вместо 0 (например, 0.004f).
  4. Если вы хотите, чтобы исчезнуть из , а затем выцветанию, вы должны сделать это так:

    IEnumerator Fade() { 
        // fade to transparent over 500ms. 
        lightImage.CrossFadeAlpha(0.004f, 0.5f, false); 
    
        // Wait for 500ms 
        yield return new WaitForSeconds(0.5f); 
    
        // and back over 500ms. 
        lightImage.CrossFadeAlpha(1.0f, 0.5f, false); 
    } 
    
    void Start() { 
        StartCoroutine(Fade()); 
    } 
    
Смежные вопросы