・前日。
0800:ミックスナッツ✕1+プロテインバー半分。
1100:ミックスナッツ✕1。
1200:焼き鳥。もう少し惣菜を追加しても良かったか。こっちのだと本数がちょっと少ないからな。
1400:焼き芋。差し入れのをカロリミットありで摂取。
1600:プロテインバー半分。プロテインバーを考えるなら肉惣菜も増やしづらいか。なかなか難しいな。まぁ夕方の惣菜まで買えば良いんだろうけど。
1800:ミートボール酢豚+マンナン米。
1900:ミックスナッツ✕1。晩飯はなんとか1食分に抑えたが、やはり糖質が多いせいか満腹感に難があるなぁ。
電解質タブレット✕3と水分1.8リットル程度。
性欲:低。さすがに家族と居ると発生しづらいな。
筋トレ:タオル僧帽筋20✕3回。


・食事。
晩飯にタンパク質が少ないなら昼~夕でタンパク質の摂取をするという目標にある程度は沿っているのかもしれない。ただ、糖質の摂取で結局睡眠に悪影響が出る可能性もあるのでなんとも。


・Unity。
なんか思ったより作業効率が悪いな。弟は仕事にいってるし寒さはそれなりに対処できてると思うんだけど、なんかぼんやりするような感じで過ごしてしまってることが多かったように思う。
モチベがないようなら他の作業をしても良いが。


・睡眠時間5時間半くらい。
仕事に遅れる夢を見たりしたが、まだ新年にもなってないのに気が早すぎるな。


・個人作業。
朝はなんか興が乗らなかったので自分の体調改善の要素をまとめてたりした。
で、買い出しの復路にてUnityまわりの思考の進展があり、今度はそっちにモチベが傾いたようなのでそっちの作業を進めよう。


・Unity。
まずは状況をまとめようか。
同一のプレハブ(というかそのインスタンス)の一部をオンオフしたりしながら使いまわしたいわけだが、それをViewごとに分けるのか、モードで区切ったりpartialで分けたりするのか、という問題。
まず、概念としてはそれぞれのViewは別物であり、「同じインスタンスを使いまわしているか?」というのは各画面の知ったことではないのでView自体は個別に用意すべきだろう。
ただ、それはそれとして同じ「構造」を使いまわしてはいる都合上、それらの操作に関しては統一したい。これに関してもいくつか実装方法は考えられるが、今回に関してはベースクラスでそれらの操作を統一し、Viewごとに継承クラスを用意する形で問題ないかと思う。
で、そうなると「ベースクラス側は同じインスタンスを使いまわしていることを把握しており、派生クラスの方でそこらへんを気にしなくて良いようにラップする形になるかなと思う。
ただ、じゃあインスタンスをどこに置いておくか。ベースクラスで普通に持つと派生クラスごとに生成してしまうし、staticで持つようなものでもない。すでにやっているようにステージのデータは常時存在しつつUI側で参照するような形と同じにはしたいところか。
いっそ同一プレハブに複数Viewをつけても良いか。View自体は使い回しをさして意識しないまま、それらを使う側だけが使いまわしを意識して「インスタンス化は1度きり」「そのうえでViewの切替を行う」という形で良い気はする。Viewとはさらに別で「共有するTransformなどの情報だけEditor上で設定するクラス」みたいなのを用意しておき、そこに共有情報をセット、Baseクラスでそれを参照~ラップ、派生クラスはそこらへんを気にせずBaseクラス経由で操作、という形?少しだけ複雑になってきた気もするが、まぁ問題ないレベルだとは思うし地道に進めて完了できるだろう。


・晩飯の肉。
仮に翌日の眠気に影響するとして、消化酵素まわりを補助すればなんとかなったりするだろうか?ここらへんまで含めると検証には数ヶ月かかりそうな感じだが。


・Unity。
とりあえず上記の方向で対応を進めてたんだけど、「Awakeが終わったことを非Active化で伝える」ってのが複数Viewをアタッチした場合に使いづらいな。「全てのAwakeが終わったら」という処理にすれば一応いけるんだけど、1つ目のAwakeが2つ目の開始前に終わった場合に誤検出がありうるし、コンストラクタで最初のカウントアップしようとしたらMonoBehaviourのコンストラクタは1度だけ呼ばれるとは限らない(普通に2~3回呼ばれる)のでムリだった。
そもそも現状のやり方だと待機とかの都合で開始直後はUIが一通り表示された状態になってしまってたから、ここらへんの非表示・待機処理まわりの整理が必要そう。
とりあえず頭で非アクティブにしてしまうか。で、判定の方は新しいフラグ的なのを用意しよう。
うーん。Awakeは非アクティブでも動くという記述を見た気がするし、実際だいたいそれで動いてるっぽいんだけど、上記の多重ViewだけなんかAwakeそのものが呼ばれてないな。その状態でEditor上からアクティブにするとAwakeが動くし。
うん。他のは呼び出し履歴的にInstantiateから直接Awakeまで繋がってるが、今回のはEditorから呼ばれてる。Awakeの手前の時点でEditorなので、他のところで止まってたわけでもなさげ。
改めて調べてみたところ、「コンポーネントが非アクティブでも動く」だけで「GameObjectがアクティブの時のみ動く」っぽい。認識がちょっとズレてたな。となるとさらに初期化の制御を考えないといけないか。
挙動を推測すると、1つのGameObjectに対する各コンポーネントのAwakeは一括で呼ばれるわけではなく上から順に呼ばれるのではなかろうか。で、複数Viewをアタッチする場合、1つ目のViewでGOを非アクティブにするため、次のViewのAwakeが呼ばれなくなる。
かといってAwake以外で初期化しようにもコンストラクタは前述の通り複数回呼ばれるうえにResourceのLoadができなかったりするし、Startでも結局非アクティブでは呼ばれない。
そうなると必要なのは「Awakeを一括で呼ぶ仕組み」になるか。違うな。逆か?「AwakeでGOを非表示にする」だけのコンポーネントをさらにもう1つ追加し、それをコンポーネントの最後にアタッチする?ただ、Awakeの実行順序は保証されてないのでやっぱりこれもダメだな。調べてみても「処理順序を制御したい場合、Awakeは1つにして他ので制御する」とある。
あー。ていうかGameObjectを初期非表示にしたいのはあくまで「UIがいきなり最初から表示されるのを防ぐため」であって、必ずしもAwakeのタイミングである必要はないんだよな。表示前のタイミングであればそれで良くて、であれば別にStartのタイミングでも良い。もともとAwakeの終了タイミングの検知のためにAwakeにこだわってたが、そっちは別のフラグで管理するようになったし、なんなら別にStartの頭になったことを検知してもおそらく問題はない。
というわけでStartで非表示にする方向で対応を進めるか。フラグまわりはそのままにしとくか。「非表示になるのを待つ」ってのはなんか違う気がするしな。
あー。Startで非表示にしてしまうと「Awake終了フラグ検知→一番最初に表示するViewだけActive化」が先に実行されてしまい、その後にStartの非表示が実行されてしまうか。であれば終了フラグもStartの非表示化後にせざるを得ないな。まぁ共通化できるのは良いんだけど。
うーん。しかしStartにフラグを持ってくると今度は最初のViewで非表示になった際に2つ目以降のViewのStartが呼ばれないか。まぁこの状態でOKとなるような判定処理を用意しても良いが、この状態で再びアクティブにすると2つ目以降のStartが走り出して変な風になりそうか。となると、Awakeでカウントアップ、Startでカウントダウンして0になったら非アクティブってのが妥当かな。それならまぁ今の共通化を利用してなんとかできるかな。staticな変数が増えてしまうが、個人開発ならまぁ許容しよう。
フラグの表示はカウントによらずやりつつ非表示だけカウント0でやるとか細かい対応はあったが、とりあえずこれでようやく初期非表示かつAwakeの終了待ち(複数のアタッチ含む)が完了。意外と面倒だったな。でもまぁお陰でAwakeとかの理解がまた一つ深まった。
仮組みしたプレハブの表示まではできたので、あとは実際の中身をあれこれ組んでいく作業になるが、もう17時。まぁまだ作業はできるものの今日中の完成は難しいか。残りは明日、すなわち来年かな。やはり実家だとどうにも実装ペースが遅い。意外とライティングまわりの影響もあるかもしれない。ちょっと暗いんだよなここ。


・糖質+食物繊維。
今回もまた差し入れみたいな感じであんころもちを摂取。2つでおそらく糖質50gは軽く超えてると思うが、すこやか茶+賢者の食卓✕2と一緒に摂取してみたところ2時間経過しても特に眠気が生じなかった。ここまで特化すれば糖質の影響を軽減できるか?あるいは効果が遅延してるだけでこれから悪化していくだろうか。まぁなんにせよなんらかの効果はありそう。
こうなると水溶性食物繊維で吸収阻害はやはり発生してるっぽいかな。タンパク質とかと一緒に摂取すると1日に必要なタンパク質が足りなくてダウンする感じ?
あと1回試すだけのストックはあるが、1本しか残ってないのでそれ以降はまた補充しないといけない。ただ、おそらく1月1日から店が開いてるとはいえ気分的には行きたくないんだよな。1月1日から誰かが働いている状況を肯定したくない。行くなら早くても3日からにしたい。そのために惣菜のストックはすでにあるし。だから、外出して買うにしても自販機が限度かな。まぁ田舎で自販機とか逆に見かけない気もするが。店の外に出しておく意味もないからなぁ。探せばありそうな気もするが。まぁ運動的にもモンハンNOW的にもどうせ外出はしたいからついでに探してみるか。
ていうかすこやか茶にこだわる必要もないのか。賢者の食卓はあるからな。なんなら自前で淹れたお茶とかですら良い。まぁ摂取しやすさを考えると小さいサイズのペットボトルが良くはあるが。


・賢者の食卓。
結局、さっきのは3時間後に軽い眠気はきたものの、摂取を忘れていた電解質タブレットを直前に2つまとめて摂取していたのでその影響の可能性もある。なんにせよダウン症状まではいかなかった感じ。
で、晩飯がまた糖質まみれではあったんだけど、味噌汁に賢者の食卓を入れられることに気付いたのでそれで対処してみた。あとはこれでどうなるか。