問題
ButtonのコールバックにPointerDownEventを指定すると発火しない
解決策
ClickEventを使うか,イベント登録時にTrickleDownを指定する
理由
Buttonは特殊な実装な上に昔書かれたやつだから.
以下PointerDownEventを使う場合
ButtonのコールバックにPointerDownEventを指定すると発火しない
ClickEventを使うか,イベント登録時にTrickleDownを指定する
Buttonは特殊な実装な上に昔書かれたやつだから.
以下PointerDownEventを使う場合
Unity Physicsをpre.65にアップデートしたら,PhysicsShapeなどのコンポーネントが追加できなくなり,表示されなくなった
同じ症状が起きた人
Question - [pre.65] how to add PhysicsStepAuthoring Component and etc - Unity Forum
パッケージを右クリックから再インポートする
(再起動では直らないのは邪悪すぎる・・・)
ドキュメントに書いてないので注意
Unity - Scripting API: RuntimeInitializeOnLoadMethodAttribute
// 通常クラス public class Hoge { [RuntimeInitializeOnLoadMethod] static void OnRuntimeInitialize() { _count = 100; } public void ShowCount() { Debug.Log(_count); // 100 } private static int _count = 0; } // ジェネリック public class Hoge<T> { [RuntimeInitializeOnLoadMethod] static void OnRuntimeInitialize() { _count = 100; // ここには一度も到達しない } public void ShowCount() { Debug.Log(_count); // 0 } private static int _count = 0; }
静的ジェネリックでも同様.とにかくジェネリックはすべて呼ばれない.
RuntimeInitializeOnLoadに限らず,CustomPropertyDrawersはすべてジェネリックをサポートしていない.
Addressablesのドキュメント見てて気づいた.
RGBは光の三原色(加法混色)(加算レイヤー)
CMYは色の三原色(減法混色)(乗算レイヤー)
C: 1-R, M: 1-G, Y: 1-B
HSVは光源色
HSLは物体色
カラーサークルをHLS空間にすればPCCSの概念をほぼそのまま使える*1
ofo.jp www.psy.ritsumei.ac.jp www.youtube.com
dentakumanga.com compojigoku.blog.fc2.com
光度は放射強度に似ているが、光源のスペクトル中の全ての波長の寄与を単純に合計するのではなく、それぞれの波長について標準的な比視感度(異なる波長に対する人間の目の感度のモデル)によって重みづけする
明るい場所に順応したときに、ヒトの目が最大感度となる波長での感じる強さを "1" として、他の波長の明るさを感じる度合いをその比となるよう、1以下の数で表したものである。
明るい所では555nm(ナノメートル)付近の光を最も強く感じ、暗いところでは507nm付近の光を最も強く感じるとされる。
輝度(Luminance): 光源の明るさを表す心理物理量(cd/m2)
心理物理量といわれているのは,cd自体が比視感度によって重みづけされた値のため.
明るさ(Lightness): 見た目の明るさのこと.物理量ではない.
関数の値なので,色空間が異なれば(関数も変わるので)値が変わる.
例えばHSLのL,HSVのV,CIEL*C*h*のL*,これらの明るさの値は異なる.
HSVやHLSにおけるカラーサークル上の輝度(CIEXYZのY)
クリスタの色相レイヤー等を用いたグレースケールは,CIEXYZのYを表している
CIEXYZ色空間は,均等な空間ではないので,1と3の差と7と9の差が同じではないということが起こる
より均等な空間なのがCIEL*a*b*やCIEL*u*v*
CIEL*C*h*(ab)のL*の値
R: 54.2 G: 87.8 B: 29.5
C: 90.6 M: 60.2 Y: 97.6
XYZの1と3の差はL*C*h*では24.7,7と9の差は7になっているのがわかる
sRGB(ガンマ)
sRGB(リニア) <=> XYZ <=> L*a*b* <=> L*C*h*
sRGBはデフォでガンマ補正がかかってる(スクリーン上で自然な明るさに見えるようにするため)
よってsRGBからXYZへ変換する際は,sRGBをリニアにしてから行う必要がある
第29回 色の客観的な表現と伝達 (その3)|CCS:シーシーエス株式会社
xy色度図はX + Y + Z = 1とすることで得られる.(Z = 1 - X - Yと表せるためZが消える)
基準の白色点から求められる
白色点には主にD65とD50がある(6500Kや5000Kの光を元にしてる)
sRGBの白色点はD65(世の中のディスプレイほぼD65ということ)
XYZ空間から単純な式で変換できるが、XYZよりも知覚的に均等になっている。「知覚的に均等」とは、色の値が同じだけ変化したとき、人間がそれを見たときに感じられる変化も等しいことを意味する。
sRGB(リニア) <=> XYZ
XYZ <=> L*a*b*
L*a*b* <=> L*C*h*
RGB値を用いているのは,主にsRGB色空間とAdobeRGB色空間の2種類
RGB値は,色空間の広さに対する相対的な数値を表す
よって色空間が変われば同じ値でも違う色になる.(sRGBからAdobe RGBや,その逆)
RGB値を見る時は,それがsRGBかAdobeRGBか常に把握しておくこと
*1:HLS自体が比視感度を考慮していないので,Hueを回すだけだと輝度が異なるように見える.HLSにおける色ごとの輝度も考慮するといい