Unityでビルド時にエラーが出る : Type '[Assembly-CSharp]AAAAA' has an extra field 'BBBBB' of type 'System.Int32' in the player and thus can't be serialized (expected 'CCCCC' of type 'string[]')

こんな感じの事をしたかった

BaseClass.cs

public class BaseClass : MonoBehaviour
{

	public int ArrayCursor = 0;
	public string[] NameArray;

	void Start() {
		NameArray = new string[3]{ "山田", "鈴木", "佐藤" };
	}
	
}

UsingClass.cs

public class UsingClass : MonoBehaviour
{

	public BaseClass BasCls;	//エディタ上で設定する想定

	void Start() {
		Debug.Log( "My Name is " + BasCls.NameArray[BasCls.ArrayCursor] );
	}
	
}




そうしたらビルド時、こんなエラーが出た

Type '[Assembly-CSharp]BaseClass' has an extra field 'ArrayCursor' of type 'System.Int32' in the player and thus can't be serialized (expected 'NameArray' of type 'string[]')
UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr)



こうしたら通った

BaseClass.cs

public class BaseClass : MonoBehaviour
{

	public int ArrayCursor = 0;
	public string[] NameArray;

	void Start() {
		ArrayCursor = 0;	//←■ここに追記した
		NameArray = new string[3]{ "山田", "鈴木", "佐藤" };
	}
	
}




他クラスから直接変数いじったり見たりするのはクソらしいので、これに近い事をやるならgetterとsetterでやった方がいいと思う
docs.microsoft.com

UnityでNDK r20bが使えない

今PCにあるUnityのバージョンはUnity 2019.2.19f1

 

answers.unity.com上記の回答の通り使えないらしいし、実際自分もr20bダウンロードしてUnityにパスを教えたら「r16b以外認めない」というエラーで返された

 

ので、現時点では素直に過去バージョンのNDKであるr16b使った方が早い

developer.android.com

C#でXMLでLINQでクエリ式で、複数の子要素に対してjoinする

基本的にXElementで触ってる
こんな感じのXMLがある

<Characters>
	<Character id="1">
		<Name>山田英子</Name>
		<Skills>
			<Skill id="1" />
			<Skill id="2" />
			<Skill id="3" />
		</Skills>
	</Character>
	<Character id="2">
		<Name>鈴木美子</Name>
		<Skills>
			<Skill id="4" />
			<Skill id="5" />
			<Skill id="6" />
		</Skills>
	</Character>
</Characters>

<Skills>
	<Skill id="1">
		<Name>ファイヤー</Name>
	</Skill>
	<Skill id="2">
		<Name>アイスストーム</Name>
	</Skill>
	<Skill id="3">
		<Name>ダイアキュート</Name>
	</Skill>
	<Skill id="4">
		<Name>ブレインダムド</Name>
	</Skill>
	<Skill id="5">
		<Name>ジュゲム</Name>
	</Skill>
	<Skill id="6">
		<Name>ばよえ~ん</Name>
	</Skill>
</Skills>

こんな感じでselect文の中でjoinする

IEnumerable<XElement> characterAndSkill =
	from t_character in Characters.Elements()
	select new XElement( "Character",
		t_character.Attribute( "id" ),
		t_character.Element( "Name" ),
		new XElement( "Skills",
			from t_characterskill in t_character.Element( "Skills" ).Elements()
			join t_skill in Skills.Elements()
			on (int)t_characterskill.Attribute( "id" ) equals (int)t_skill.Attribute( "id" )
			select t_skill
		)
	);

UnityでAndroidで日本語アプリでさわらび明朝に気をつける

Androidアプリをリリースする際には、UnityデフォルトのArialだと日本語が表示されない事があるので、フォントを同梱してビルドする事を考えていました

そしてフォントを同梱するのは再頒布に当たる為、再頒布可能なライセンスの日本語フォントというのが少なく、私が辿り着いたのはGoogle Fontsのさわらび明朝でした

 

ただ、色々触っていて気付いた事としては、さわらび明朝は対応していない文字が結構あるという事

 

f:id:WatarikiTori:20200115120926j:plain

https://fonts.google.com/?subset=japanese

 

特に「々」に対応していないのが痛いので、明朝体を使うならNoto Serif JPが無難だと思います。シーンのText全とっかえになるので早めに確かめた方が良いですね。私は遅めに気づきました

イベントシーン完成

完成しました

f:id:WatarikiTori:20200114180714j:plain

完成したといっても画像の通り立ち絵は仮当て状態で、同じ人物が二つ立っているものです。あとで差し替えます

 

難しかった所としては、文字表示中にタップすると行末まで一気に表示する機能ですね。タップするとタップした時点で文字表示が止まったりエラー吐いたり一行だけじゃなくページ内の文字全部表示されたりしました

次に難しかった所としては、文字の表示機能ですね。つまりノベルゲームをプラグイン無しに作ろうとするとここらへんとしおり機能が難関になると思います。私はもうノベルゲームを作らないようにしようと決意しました

 

 

 

雑記

  • Google AdMobの広告が表示されるようになった。原因はAPIのターゲットが28になっていなかった事っぽい。あとUnityのエディタには広告が表示されない。Android実機で確かめないといけない
  • フィールドの探索シーンは艦これ式とかガラケー時代式一本道とか色々考えたけど、ローグ式の自動生成で行こうと思った。工数大丈夫か。大丈夫じゃなかったらプレイヤーにガラケー時代を懐古してもらう。探索ボタンを押すとスタミナが減っていくだけの一本道を
  • AudioStockで戦闘BGM探しているけどオーケストラ調で通常戦闘に合いそうなのが中々無い。オーケストラだと大体ボス戦にしか合わない荘厳な感じのBGMが多い。哀愁感と緊迫感とそれでいてそんなに壮大ではないのが欲しい

ゲームを作っています

現在レッドオーシャンとなっているスマホゲームですがそのスマホゲームを作っています。タイトルは「セルワル」というので

f:id:WatarikiTori:20191226135504j:plain

 

セルワルというのはセルフ・ワールドの略で、なんだか発音がいいからセルワルにしました。じゃあセルフ・ワールドが何かというとまぁ世界的なものです

冬の世界とか白黒の世界とか楽園の世界とか機械の世界とか色々な世界があって、そこにワールドウォーカーというプレイアブルキャラが一人いて、そのキャラを集めてゲームを進めていく感じにしようとしています

 

ゲーム性としては、床要素のないFF14みたいな感じがいいなぁと思います。当初は艦これ的なのにしようかと思ってイラストレーターさんに「艦これみたいなイラストでお願いします」と言ったのですが、制作途中で放置していたFF14を再開してしまって安易に方向転換しました。ごめんね。描いてもらった中破絵はちゃんと使います

 

フィールドに出撃してマップを探索して敵とエンカウントして敵を倒してスキルを覚えて素材を集めて売却したり武器作成したり強化したりのRPGパートを主にして、キャラごとのプロローグやイベントのノベルゲームパートを副としていきたいですね。つまりバトル部分がFF14FGOみたいなものを。エフエフエフ

 

肝心のゲーム部分がまだ作れていない訳ですが

f:id:WatarikiTori:20191226135821j:plain

これはシーン集です。ご覧の通り、「Battle」とか「Action」とかそういう感じの部分が作れていません。今作ってるのは「Story」の部分です。ノベルゲーム部分です

この部分で分かる人には分かりますがUnityで作ってます。何故Unityかというと前の職場のスマホアプリ開発部門がUnityを使っていて、じゃあ自分もそれで開発しようと思ったのです。自分の専門はWeb屋でしたが

それと「Ready」とか「Ready2」とか「Start」とか似たようなシーンがありますがこれは私の無策によるものです。私がこれまで歩んできた人生の体現です

 

f:id:WatarikiTori:20191226141616j:plain

作っていて痛感した事としては、やはりプロが世に出しているものとは玄人のものなのだと感じます(小学生)

GUIがUnityのUI感丸出しなので、仮に30%くらいの確率でゲームが完成して公開されたとしてもこの画面で「うわっ」となってアンインストールする人が70%くらいいる気がします

 

前述しましたがキャラクターイラストはイラストレーターさんに有料で頼んで描いてもらいました。すごい可愛い。背景画像はAdobe Stockのサブスクリプションに加入してダウンロードしました。Adobe Stockの画像を使用したアプリとかが50万ダウンロード以上するとサブスクリプションの権利では無理でプレミアムにしないと駄目だそうです。50万ダウンロード行けたらだけどね。行けたらいいね。行こうね

 

f:id:WatarikiTori:20191226142454j:plain

ノベルパートはそれなりに形になったので、次はイベントパートを作ろうと思います。ノベルパートとイベントパートどう違うんだと思いますが、イベントパートではキャラクターの立ち絵を表示して下にメッセージウィンドウ表示してつまりFGOです。エフ

 

 

 

私は数十年に渡る三日坊主なので、ちゃんと完成できるかというのが非常に不安です

今現在も広告を入れようとしてGoogle AdMobの色々を入れたのですが広告が表示されない状態で開発を進めているくらい問題が山積みの状態です。四種類くらい用意したい敵イラストも依頼したのが一件だけで、更に言えば金がないから自作しようと思っている味方ゴーレム二匹のイラストも描いてないです

こうして未完に終わっても当然の結果だという予防線を張るのが悪い癖なので、「セルワル」を完成させてリリースさせたいと抱負を語ります。リリースは2020年3月末です。よっしゃ書いたからな未来のお前ちゃんとリリースしろよ