えんの付箋紙と小さなダンボールの中

LOLとかスマホゲームとかたまに開発も サモナーネーム: enpel

FF14 3度目の復帰

steamcommunity.com

知人のいるAtomosで、新規で1からやってます。

今までFirstNameを自分の名前にしてたけど 今度のキャラはFirstNameはこの子の名前。FamilyNameは自分の名前にしました。

銃打てるようになりたいけど白魔導士にもなりたい そんな娘です。

Unibook8で書く予定の話

毎回微妙に役にたつんだかたたないんだかみたいな記事ばっか書いてるえんぺるです。

今回書く予定の話は基本的にはUnityの外の話なんだけど マスターデータについて書きます。

具体的にはExcelを使って編集したMasterDataをYamlにする話みたいな感じ 主にAssetとかOSSのソフトの紹介になります。

そんな感じ

サバクのネズミ団

FTL系ゲームらしい

時間を忘れてというか寝るのを忘れるほどずっとやってた。

Shaderを学ぶ

これを見ている人のうちどれだけがUnityのマニュアルを見たのだろう

Unity - マニュアル: シェーダーリファレンス

C91 Day1 お疲れさまでした。Unibook7と総集編を頒布してきた。

当初予定していた内容ではない内容をUnibook7には載せてます。

ライト周りとかは次回かなぁ・・・

最近元気になってきたので個人でも何か出したいなって思いつつ来年頑張る感じで…!

?らへんを気にしてる。(栄光さんはUnibook7で使ってるところ

コンカ | ダウンロードカード・ミュージックカード製作サービス

同人誌 印刷|株式会社 栄光|栄光情報最前線

Unibookはどうしても福袋感があるので自分で作るとしたらEditor拡張のやつとかかなー

とりまそんな感じで1日目お疲れさまでした!!

2日目は西の-16aで売り子してます。 もしお近くを通ったらぜひお声がけください!

あと技術書典も気になってる techbookfest.org

InvalidOperationException: The operation is not possible when moved past all properties (Next returned false)

というわけで表題のエラーの話

今回はEditorGUI.PropertyFieldでVector3型を表示しようとしてできなかったので対応した話。

// ここで表題のエラーが出る
EditorGUI.PropertyField(rect, action.FindPropertyRelative("targetPosition"));

action.FindPropertyRelative("targetPosition")はVector3型が格納されている action.FindPropertyRelative("targetPosition").vector3value等を見ると正常に取れている事がわかる

EditorGUI.PropertyField(rect, action.FindPropertyRelative("targetPosition")); を使いたいけど表題のエラーが出てうまくいかない場合は以下のように直す事で解決ができる。

action.FindPropertyRelative("targetPosition").vector3Value = EditorGUI.Vector3Field(rect, "hoge", action.FindPropertyRelative("targetPosition").vector3Value);

しかし厳密な解決じゃないというか 例えば

var properties = new string[] { "hoge", "fuga", "targetPosition" };
foreach (var p in properties)
{
    EditorGUI.PropertyField(rect, action.FindPropertyRelative(p));
}

のようにしたい場合にこまるかもしれない。 1つ2つの例外ならいいかもしれないけどそうもいかないとおもう。

そこについては解決したらまたなんか描きます

追記

var properties = new string[]{"hoge", "fuga", "targetPosition"};

foreach (var p in properties)
{
    var property = action.FindPropertyRelative(p);
    switch(property.propertyType)
    {
        case SerializedPropertyType.Vector3:
            property.vector3Value = EditorGUI.Vector3Field(rect, property.displayName, property.vector3Value);
            break;
        default:
            EditorGUI.PropertyField(rect, property);
            break;
    }
}

これで良さそう

5人組を期待するなら

public List<Character> Party = new List<Character>();

ではなく

private Character[5] party = new Character[5] {null,null,null,null,null};
public  Character[5] Party { get { return party; }

がいいんじゃねって話。

これがListであって且つpublicであることで他の実装者が混乱してしまう場合があるのでそうならないためにも意図的に制限をする事って大事だよね。 バグらないためにみたいな話