- 投稿日:2019-05-06T15:17:22+09:00
uGUIでボタン選択時の色をスプリクトで変更する。
uGUIは便利。
なんだけれども、ボタンイベント時の色変更(Color Tint)は減算なので、思った色に変更できない事が多い。(デフォルトを黒背景にした時とか特に)
なので、選択時にImageの色を直接変更できるようにした。
イベントシステムのcurrentSelectedGameObjecで現在選択しているオブジェクトを取得できるのがポイント。
this.GetComponent<EventSystem>().currentSelectedGameObjec
と使おう。下記成果スプリクト。
using System.Collections; using System.Collections.Generic; using UnityEngine; using UniRx; using UniRx.Triggers; using UnityEngine.EventSystems; using UnityEngine.UI; public class button_select_push : MonoBehaviour { private GameObject old_obj =null; // Start is called before the first frame update void Start() { var select_color = this.UpdateAsObservable() .Select(_ =>this.GetComponent<EventSystem>().currentSelectedGameObject) .Where(x=> x !=old_obj) .Subscribe(x => { if(old_obj != null) { old_obj.GetComponent<Image>().color = new Color(0f, 0f, 0f, 1f); } x.GetComponent<Image>().color = new Color(0f, 0.9f, 0f, 1f); old_obj = x; }); } }
- 投稿日:2019-05-06T14:40:04+09:00
Shader入門① オブジェクトの色を変えてみる
Shaderとは
陰影処理を行うためのプログラムのこと
Shaderを書く前に
エディタによってはShader用のextensionがあるのでインストールしておくと楽にShaderを書くことができます。
お使いのエディタで調べてみましょう。Unity上では4種類のShaderを作成することができます。
Surface Shader
ライティングやシャドウを簡単にいい感じにしてくれるShader
Unlit Shader
Shader言語
HLSL
High Level Shading Language
の略称
マイクロソフトによって開発されてDirectXで使われてきた。
後述のCg言語と似ている。Cg言語
NVIDIAによって開発された。
C言語をベースとした文法。GLSL
OpenGL Shading Language
の略称
OpenGLで使われてきた。
C言語をベースとした文法。ShaderLab
UnityではShaderLabというHLSL、Cg言語をラップしたようなもので記述される。
Shaderを書いてみる
オブジェクトの色を青くする最低限のShaderを書いてみる。
sample.shaderShader "Custom/sample1" { SubShader { CGPROGRAM #pragma surface surf Standard fullforwardshadows struct Input { float2 uv_MainTex; }; void surf (Input IN, inout SurfaceOutputStandard o) { o.Albedo = float4(0, 0, 1, 0); } ENDCG } }解説
sample.shaderShader "Custom/hoge/sample1" // Unity上から参照するパスのようなもの。Shader毎のグルーピングに使える { SubShader { CGPROGRAM // プログラムの内容はCGPROGRAM~ENDCGの中に記述していく // #pragmaはどの関数がsurfaceなのかを明示している #pragma surface surf Standard struct Input { float2 uv_MainTex; }; // surfaceシェーダー関数を定義している。関数名は自由につけることができる void surf (Input IN, inout SurfaceOutputStandard o) { o.Albedo = float4(0, 0, 1, 0); // RGBAでBを1にしているのでオブジェクトは青くなる } ENDCG } }尚、Cg言語で扱えるデータ型については下記を参照
https://ja.wikipedia.org/wiki/Cg_(プログラミング言語)#データ型Properties
Shaderにはプロパティを定義することができ、Unityエディタ上から編集することができるようになります。
sample.shaderShader "Custom/hoge/sample1" { Properties { // カラープロパティを定義。デフォルト値は黒 _Color("Color", Color) = (0, 0, 0, 0) } SubShader { // SubShader内でプロパティをメンバ変数として定義 fixed4 _Color; void surf (Input IN, inout SurfaceOutputStandard o) { o.Albedo = _Color; } ENDCG } }Colorというプロパティが設定されていますね。
定義できるプロパティは下記を参照
https://docs.unity3d.com/ja/current/Manual/SL-Properties.html
- 投稿日:2019-05-06T12:54:21+09:00
BlenderのモデルをUnityに取り込む方法
- 投稿日:2019-05-06T12:05:01+09:00
【メモ】VCIの項目メモ
すぐに忘れるので ?
詳しくはここ https://virtualcast.jp/wiki/doku.php?id=モデル作成:vci作成:vci作成
VCI Object
- Author:作者名
- Model Data License / Script License:クリエイティブコモンズのやつ
- Ohter Licence:その他ライセンス URL入力(任意)
- Scripts:Size1で入力可能
VCI SubItem
- Grabbable:☑でつかめる・☐でつかめない
- Scalable:☑でサイズ変更可・☐でサイズ変更不可
- バーチャルキャスト上の最小サイズは0.2なので、XYZスケールのどれかが0.2以下のときに☑にするとサイズ変更したときに0.2に最小値が固定されてしまうので注意
- UniformScaling:☑でXYZ同じ割合で拡縮
collider
- Is Tigger:当たり判定オンオフ(これをオンにしないとほかをオンにしても当たり判定が発動しない)
Rigibody
- Use Gravity:重力オンオフ
- Is Kinematic:物理演算オンオフ(☑で投げると飛んでいくやつ)
- 投稿日:2019-05-06T11:24:07+09:00
WWWクラスが非推奨になっていた件
前置き
- 標準ブラウザに簡単にアクセスできるApplication.OpenURLとよくセット使っていたWWWが気づいたら非推奨になっていた。
Application.OpenURL("https://ja.wikipedia.org/wiki/" + WWW.EscapeURL(string.Format("hoge{0}", param)));
- Unity 2018 .3.11.f1
修正
警告メッセージ通りだけど
WWW → UnityEngine.Networking.UnityWebRequestApplication.OpenURL("https://ja.wikipedia.org/wiki/" + UnityEngine.Networking.UnityWebRequest.EscapeURL(string.Format("hoge{0}", param)));参考