時間を考慮してオブジェクトをフェードアウトさせるスクリプトを作成しています。ユニティメッシュレンダラーは完全に透明ではありません
スクリプトは非常にうまく動作しますが、オブジェクトが退色しても、インスペクタとビルドでは非常に見えます。
誰かがなぜ、どのようにオブジェクトを完全に見えないようにするのか説明できますか? (私はオブジェクトを「有効にする」ことができますが、フェーディングよりも多くのリソースを使用していませんか)私は知らない:()
ここで私は間違いを犯したここで団結のフォーラムでトピック)
// Update is called once per frame
void Update()
{
MyTime = Time.deltaTime;
AccumulatedTime += MyTime;
if (this.name == "Cube (1)")
{
Debug.Log(AccumulatedTime);
}
if (SwitchVisibility == 1)
{
if (AccumulatedTime >= Interval && AccumulatedTime<= 2*Interval || AccumulatedTime >= 3*Interval && AccumulatedTime<= 4*Interval)
{
StartCoroutine(FadeTo(0.0f, 1.0f));
SwitchVisibility = 0;
}
}
if (SwitchVisibility == 0)
{
if (AccumulatedTime >= 0 && AccumulatedTime <= Interval || AccumulatedTime >= 2*Interval && AccumulatedTime <= 3*Interval)
{
StartCoroutine(FadeTo(1.0f, 1.0f));
SwitchVisibility = 1;
}
}
if (AccumulatedTime >= Interval * 4.5f)
{
AccumulatedTime = 0;
}
}
IEnumerator FadeTo(float aValue, float aTime)
{
float alpha = MyRenderer.material.color.a;
for (float t = 0.0f; t < 1.0f; t += Time.deltaTime/aTime)
{
OriginalColor.a = Mathf.Lerp(alpha, aValue, t);
Color newColor = OriginalColor;
MyRenderer.material.color = newColor;
yield return null;
}
}
は次のようになりどのオブジェクトである:あなたのコードを仮定し
'FadeTo'関数の' aValue'と 'aTime'変数は何ですか?また、時間をかけてフェードアウトしたいですか?また、ある時点でオブジェクトを表示させたいのですか? – Programmer
aTimeは、for文のTime.DeltaTimeを分割するために使用される値です。オブジェクトをフェードする速度を設定します。 私はすべての "間隔"秒(エディタで設定された間隔)をフェードインします。 私は問題を正しく説明していないかもしれませんが、私の質問は完全に見えないようにしたい、コードがうまく動作することです(オブジェクトが見えなくなっても)。 – Andromelus
'Debug.Log ) 'その値が実際に0であるかどうかを確認してください。これはコードのトラブルシューティングに役立ちます。結果を教えてください。わかった。いいえ、コードが正しく動作しません。デバッグの出力を教えてください。Log(alpha) ' – Programmer