using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
public class Fader : MonoBehaviour
{
#region FIELDS
public GameObject fadeOutUIGameobjectImage;
public float fadeSpeed = 0.8f;
public bool fadeOnStart = false;
private Image fadeOutUIImage;
private void Start()
{
if(fadeOnStart == true)
{
StartCoroutine(Fade(FadeDirection.Out));
}
}
public enum FadeDirection
{
In, //Alpha = 1
Out // Alpha = 0
}
#endregion
#region FADE
public IEnumerator Fade(FadeDirection fadeDirection)
{
fadeOutUIGameobjectImage.SetActive(true);
float alpha = (fadeDirection == FadeDirection.Out) ? 1 : 0;
float fadeEndValue = (fadeDirection == FadeDirection.Out) ? 0 : 1;
if (fadeDirection == FadeDirection.Out)
{
while (alpha >= fadeEndValue)
{
SetColorImage(ref alpha, fadeDirection);
yield return null;
}
fadeOutUIGameobjectImage.SetActive(false);
}
else
{
fadeOutUIGameobjectImage.SetActive(true);
while (alpha <= fadeEndValue)
{
SetColorImage(ref alpha, fadeDirection);
yield return null;
}
}
}
#endregion
#region HELPERS
public IEnumerator FadeAndLoadScene(FadeDirection fadeDirection, string sceneToLoad)
{
yield return Fade(fadeDirection);
SceneManager.LoadScene(sceneToLoad);
}
private void SetColorImage(ref float alpha, FadeDirection fadeDirection)
{
if (fadeOutUIImage == null)
{
fadeOutUIImage = fadeOutUIGameobjectImage.GetComponent<Image>();
}
fadeOutUIImage.color = new Color(fadeOutUIImage.color.r, fadeOutUIImage.color.g, fadeOutUIImage.color.b, alpha);
alpha += Time.deltaTime * (1.0f / fadeSpeed) * ((fadeDirection == FadeDirection.Out) ? -1 : 1);
}
#endregion
}
इस मामले में यह छवि है, लेकिन उदाहरण के लिए चर fadeOutUIGameobjectImage एक टेक्स्ट या कैनवास रेंडरर या केवल कैनवास या क्यूब या सिलेंडर या कोई ui तत्व है तो दो पंक्तियों में:
private Image fadeOutUIImage;
और
fadeOutUIImage = fadeOutUIGameobjectImage.GetComponent<Image>();
यह छवि प्रकार से संबंधित है, क्या स्वचालित प्रकार खोजने का कोई तरीका है? कभी-कभी मैं एक क्यूब या कैनवास या कैनवास रेंडरर या टेक्स्ट या टेक्स्टमेश या टेक्स्टमेशप्रो या इमेज या मेशरेंडरर को फीका करना चाहता हूं या शायद अब की तरह एक ही एक के बजाय fadeOutUIGameobjectImage की एक सरणी बना सकता हूं।
विचार स्वचालित प्रकार का पता लगाना है।
2 जवाब
उपयोग संचालक है?
if(obj is Image)
//... Do something for Image
else if(obj is TextMeshProUGUI)
//... Do something for text mesh pro UGui
इमेज, रॉइमेज, टेक्स्ट आदि सभी एक बेस टाइप ग्राफिक से इनहेरिट करते हैं (जो कलर जैसी चीजों के लिए बेसिक एक्सेस प्रदान करता है)।
दूसरी ओर, MeshRenderer, LineRenderer आदि रेंडरर से विरासत में मिलते हैं, जो सामग्री आदि तक पहुँच प्रदान करता है।
जब तक आपको बच्चे की विशिष्ट विशेषताओं की आवश्यकता नहीं है, तब तक आप मूल प्रकार का उपयोग कर सकते हैं और वास्तविक प्रकार के प्रति अज्ञेय रह सकते हैं
संबंधित सवाल
जुड़े हुए प्रश्न
नए सवाल
c#
C # (उच्चारण "तेज देखें") Microsoft द्वारा विकसित एक उच्च स्तरीय, सांख्यिकीय रूप से टाइप किया हुआ, बहु-प्रतिमान प्रोग्रामिंग भाषा है। C # कोड आमतौर पर Microsoft के .NET परिवार के टूल और रन-टाइम को लक्षित करता है, जिसमें .NET फ्रेमवर्क, .NET कोर और Xamarin अन्य शामिल हैं। C # या C # के औपचारिक विनिर्देश में लिखे गए कोड के बारे में प्रश्नों के लिए इस टैग का उपयोग करें।