Unity を初めて2週間の超初心者です。
UnityでwebGLを開発したいとチャレンジしてます。
実現したいことは
「3Dのビルをフロアーごとに、ゲーム画面上のスライダーバーで透明度を変更する」
見よう見まねでなんとなく
エラーメッセージは出ないようにスクリプトを書いたのですが、
どうしても透明度を変更できません。。。
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class ChangeAlpha : MonoBehaviour { public Slider alpslider = null; public GameObject gmobj = null; MeshRenderer objMaterial; Color objcolor; public void Start() { alpslider = alpslider.GetComponent<Slider>(); float maxAlpha = 255f; float nowAlpha = 255f; alpslider.maxValue = maxAlpha; alpslider.value = nowAlpha; objMaterial = gmobj.GetComponent<MeshRenderer>(); objcolor = objMaterial.material.color; } public void Update() { float alpha = alpslider.value; objcolor = new Color(0, 0, 0, alpha); } }
どこが悪いかご指摘をいただけたら幸いです。
デフォルトではマテリアルの Rendering Mode は Opaque なので、透明になりません。アルファ値を有効にするには Transparent とか Fade にします。
https://github.com/dsuz/unity-game-dev1-3d-2021/wiki/3rd-term-2nd-week#%E3%83%9E%E3%83%86%E3%83%AA%E3%82%A2%E3%83%AB%E3%81%AE%E5%9F%BA%E7%A4%8E
コメントありがとうございます。
リンク先のように変えてみたのですが、変化がありません。
スクリプト自体は問題ないのでしょうか?
Color はクラスではなく構造体だから参照ではなく値をコピーします。ですから値を変更した後にセットしないとマテリアルの設定値は変化しませんね。
bboydaisukeさんありがとうございます!
うまくできました。
回答1件
あなたの回答
tips
プレビュー