2017-09-28 87 views
-1

我希望我的問題不重複; 我有一個統一的問題。 我寫了一個透明的類(淡入/淡出循環)的對象。這是正確的。 我在場景中放了兩個按鈕,他們在畫布的地方。 運行後,儘管我已經爲畫布中的透明對象寫了一個命令,但裏面的所有內容都變爲透明(淡入和淡出循環)。 我不知道。 請幫忙。統一的透明3d

MyClass的

using System.Collections; 
using System.Collections.Generic; 
using UnityEngine; 
using UnityEngine.UI; 
using System.Threading; 
using System; 

public class Transparent : MonoBehaviour { 

private float duration = .7f; 
    public float waitTime; 
    IEnumerator co2; 
    // Update is called once per frame void 
    public void start_tranparecncy() 
    { 
     this.co2=this.blink(); 
     this.StartCoroutine (this.co2); 
    } 
    IEnumerator blink() { 

     //Color textureColor = this.transform.GetComponent<SpriteRenderer>().material.color; 
     Color textureColor = this.transform.GetComponent<Image>().material.color; 

     //textureColor.a = Mathf.PingPong(Time.time, duration)/duration; 
     //this.GetComponent<SpriteRenderer>().material.color = textureColor; 
     while (true) { // this could also be a condition indicating "alive or dead" 
      // we scale all axis, so they will have the same value, 
      // so we can work with a float instead of comparing vectors 
      textureColor.a=Mathf.PingPong (Time.time, duration)/duration; 
      this.transform.transform.GetComponent<Image>().material.color = textureColor; 

      // reset the timer 

      yield return new WaitForSeconds (waitTime); 



     } 
     //end of if(this.transform.childCount =0) 

    } 

    void stop_Transparency() 
    { 

     this.StopCoroutine (this.co2); 

    } 
} 

picture of my project

picture of my project

+0

請提供您的代碼,如果可能的話,圖片也 – Thalthanas

+0

目前還不清楚。請使用正確的命名約定。你可能是指函數而不是_command_?什麼是_canvas place_?你的意思是屏幕空間 - 覆蓋? 「所有內部的東西都變得透明」,這不是你想要達到的目標嗎? Unity中的透明度? – MrDos

+0

@EmreE哦,對不起 –

回答

0

好吧,我發現你的問題是主要的

this.transform.transform.GetComponent<Image>(); 

因爲雙變換,我t達到一個上層的父母,這是你的畫布本身。所以你畫布上的所有東西都會失去alpha值。

還編輯了一下你的代碼。而不是使用材質顏色,直接更改了圖像組件的Alpha顏色值。

using System.Collections; 
using System.Collections.Generic; 
using UnityEngine; 
using UnityEngine.UI; 
using System.Threading; 
using System; 

public class Transparent : MonoBehaviour 
{ 
    private float duration = .7f; 
    public float waitTime; 
    IEnumerator co2; 

    public void start_tranparecncy() 
    { 
     this.co2 = this.blink(); 
     this.StartCoroutine(this.co2); 
    } 

    IEnumerator blink() 
    { 
     //Color textureColor = this.transform.GetComponent<SpriteRenderer>().material.color; 
     Color textureColor = this.transform.GetComponent<Image>().color; 

     //textureColor.a = Mathf.PingPong(Time.time, duration)/duration; 
     //this.GetComponent<SpriteRenderer>().material.color = textureColor; 

     while (true) 
     { // this could also be a condition indicating "alive or dead" 
      // we scale all axis, so they will have the same value, 
      // so we can work with a float instead of comparing vectors 
      textureColor.a = Mathf.PingPong(Time.time, duration)/duration; 
      this.transform.GetComponent<Image>().color = textureColor; 

      // reset the timer 

      yield return new WaitForSeconds(waitTime); 
     } 
     //end of if(this.transform.childCount =0) 

    } 

    void stop_Transparency() 
    { 
     this.StopCoroutine(this.co2); 
    } 
} 

我已將此腳本附加到畫布中的按鈕。還可以在同一按鈕的On Click()中運行start_tranparecncy()功能。

按下按鈕後,只有按鈕的alpha值正在改變。

如果您願意,您可以更改On Click()並添加另一個按鈕。

+0

我的朋友,我需要在開始場景中淡入/淡出...我運行start_transparency方法與腳本.......例如:throw_text_p1.gameObject。 GetComponent ().start_tranparecncy();命令。 –

+0

是的,這是....感謝你我的兄弟 –