ボクステ公式ブログ

Steamのテーマ別セールイベント(フェス)に参加する方法
Steamでは季節の大型セール以外に、テーマ別のセールが年に数回開催されます。
この「テーマ別セール」には「〇〇フェス」という名前がつけられているため、以下、単に「フェス」と呼称します。
例えば、2026年6月9日から6月16日(午前2時)まで開催される「弾幕フェス」は、シューティングゲームの中でも特に大量の弾が画面内を埋め尽くす弾幕地獄(バレットヘル)と 弾幕天国(バレットヘブン)を対象とした企画です。
当社が開発・販売している『Ad SHOOt(アドシュー)』もこのフェスの対象となっています。期間内は30%引きの 840円です。
以下、機密抵触を避けるためスクリーンショット等の画像はなし、具体的な名称・数字もぼかして記述します。
[Steamテーマ別セール参加の前提]
すでにSteamのアカウント作成、および、SteamWorksに開発者登録を済ませ、かつ、既に販売中のアプリ(ゲーム)が存在している、ストアページが公開状態になっているものとします。
このいずれかがお済みでないゲーム開発者・パブリッシャーの方は、SteamWorksのドキュメントや他の先人による解説ブログ等を参照して準備を進めてください。
[フェスへの参加表明ができる期間]
その年に開催されるフェス予定については、SteamWorks内部のドキュメントで一覧を確認できます。詳細はログインをしての閲覧となるでしょう。
開催中の物を含め、まだフェスの終了していないものには参加要項の書かれたページが存在します。つまり既に始まっているフェスにも途中参加が可能であるようです。
2026年6月10日時点で11月中旬に開催されるフェスへの参加表明が可能となっているため、5か月前、あるいはもっと早くからフェスへの参加を決定できそうです。
[どうやってフェスに参加するのか?]
Steam側の機能でフェスのテーマに該当する条件を満たしたゲームは、自動的にフェスの対象となり得ます。機械的に判断されているらしく、 必ずしも全ての対象作品を網羅できず抜けが生じることもあるようです。
もしもフェス対象のゲームがあると認められれば、SteamWorksに登録してあるメールアドレス宛に招待が届きます。
招待を受けると各フェスの要項ページに「参加対象ゲーム」としてゲーム名やIDが出ていることでしょう。それを選択して登録ボタンを押せばフェスに参加できます。
しかし、当社の場合「弾幕フェス」の参加要項を確認しても「参加対象となるゲームがない」旨 表示されており、招待メールも来ていませんでした。
具体的な日数は不明ですが割引率などを入力できるフェス準備期間が1ヶ月半以上確保されるスケジュールとのことですから、当社のゲームが招待されていなかったのはフェス開催の3ヶ月 以上前に要項ページをチェックしたから、つまり、早すぎたからまだ登録されていなかっただけの可能性もあります。
[フェス要項に合致しているのに「参加対象なし」とされた場合の参加方法]
フェス概要ページには、ゲームの参加要請フォームが設置されています。
自社・自チームのゲームから、参加対象としてふさわしいと思われるものを選択し、 フリーの文章入力で、いかにこのゲームがフェスのテーマに合致しているかを入力して送信します。
Steamを運営するValve社はアメリカの会社であるため英語で申請しました。そして数営業日後、参加申請が認められた旨メールが届きました。
上記のメール受信後、SteamWorksのフェス要項ページ内「参加対象ゲーム」欄には、申請したゲーム名が示されていました。すでに登録されていたか、さらに登録ボタンを押したのかは失念しましたが無事 登録完了しました。
なお、すでに参加が決定している場合は、「参加対象ゲーム」ではなく「登録済みゲーム」として表示されます。
[参加申請では何に気をつければいいか]
当社のように、自動承認ではなく手動で参加表明を行ったケースにおいて、(どれほど効果があったのかは不明ですが)工夫した点を述べます。
ます、フェスのテーマ(今回は「弾幕シューティング」)と合致していることを改めて確認しました。
例え同じシューティングであってもFPSやTPS、ヒーローシューター、ガンシューティングは対象外であり、 また、古典的な強制スクロールシューティングであっても、弾がまばらで敵も味方も数発ずつしかショットをしないもの、弾幕を展開しないものは対象外です。
この点はクリアしていましたし、フェス対象となるようなジャンルのタグも複数ついていることを確認しました。
フェスの対象になるにはそのゲームの格となるメイン部分が要項に合致する必要があります。例え弾幕を含んでいるとしてもそれがミニゲームやおまけ、あるいは、 ゲームの一部の要素でしかない場合は対象外となる可能性があります。
当社のゲームは、弾幕シューティングであることがメインの要素であるため、この点もクリアしていました。
審査で重要視される基準はSteam社員や審査員からではなく、一般のユーザーから見てこのゲームがフェステーマと合致していると明確に分かるか?です。
つまりストアの概要やPV、スクリーンショット、説明文、タグが重要となるのですが、少し弱かったため手直しをしました。
ストアでは何度か「弾幕」という言葉を用いていましたが、それ以外は「シューティングゲーム」「ShootorGame」「Shmup」「STG」などと表現していました。
これは古典的な非弾幕シューティングを指すこともある言葉であるため、もっと積極的に「弾幕シューティング」や「BulletHell(バレットヘル)」という言葉を用いるように書き換えました。
PV映像については中身の変更はしていませんが、スクリーンショットは一部、より弾が沢山表示されている画像に差し替えたと思います。
それでも本作には「登場人物が全員美男子」という他のSTGにはあまり見られない特徴があるため、会話シーンなど非弾幕的な要素も残しました。
以上のように、一般Steamユーザーにとって弾幕シューティングであることが分かりやすいようにしつつ、Valve社(Steamチーム)への参加申請の際は、 「PVにもスクリーンショットにも大量の弾幕の展開されている場面が存在する」こと、ストアの文言で「弾幕」要素を強調したこと、 元より「弾幕」、「一騎当千型シューティング」のタグが付いていること、それが当ゲームのメイン要素であることを伝えました。
[フェス期間中の割引は必要か?]
必ずしも割引する必要はありませんが、割引を行った方がより目立つ扱いをされやすいとのことです。セール中の割引率はSteamWorksの中で変更・設定できます。過去の最大割引率と見比べることもできます。
フェスの期間が終了すると自動的に元の価格に戻ります。
割引を設定した場合、フェス期間中のストアページで通常価格から何%引かれているかが目立つように緑色で表示されます。
また、ストアにはフェス共通バナーが表示され、フェスに参加中であることが一目で分かります。
カテゴリ Steam関連
この「テーマ別セール」には「〇〇フェス」という名前がつけられているため、以下、単に「フェス」と呼称します。
例えば、2026年6月9日から6月16日(午前2時)まで開催される「弾幕フェス」は、シューティングゲームの中でも特に大量の弾が画面内を埋め尽くす弾幕地獄(バレットヘル)と 弾幕天国(バレットヘブン)を対象とした企画です。
当社が開発・販売している『Ad SHOOt(アドシュー)』もこのフェスの対象となっています。期間内は30%引きの 840円です。
以下、機密抵触を避けるためスクリーンショット等の画像はなし、具体的な名称・数字もぼかして記述します。
[Steamテーマ別セール参加の前提]
すでにSteamのアカウント作成、および、SteamWorksに開発者登録を済ませ、かつ、既に販売中のアプリ(ゲーム)が存在している、ストアページが公開状態になっているものとします。
このいずれかがお済みでないゲーム開発者・パブリッシャーの方は、SteamWorksのドキュメントや他の先人による解説ブログ等を参照して準備を進めてください。
[フェスへの参加表明ができる期間]
その年に開催されるフェス予定については、SteamWorks内部のドキュメントで一覧を確認できます。詳細はログインをしての閲覧となるでしょう。
開催中の物を含め、まだフェスの終了していないものには参加要項の書かれたページが存在します。つまり既に始まっているフェスにも途中参加が可能であるようです。
2026年6月10日時点で11月中旬に開催されるフェスへの参加表明が可能となっているため、5か月前、あるいはもっと早くからフェスへの参加を決定できそうです。
[どうやってフェスに参加するのか?]
Steam側の機能でフェスのテーマに該当する条件を満たしたゲームは、自動的にフェスの対象となり得ます。機械的に判断されているらしく、 必ずしも全ての対象作品を網羅できず抜けが生じることもあるようです。
もしもフェス対象のゲームがあると認められれば、SteamWorksに登録してあるメールアドレス宛に招待が届きます。
招待を受けると各フェスの要項ページに「参加対象ゲーム」としてゲーム名やIDが出ていることでしょう。それを選択して登録ボタンを押せばフェスに参加できます。
しかし、当社の場合「弾幕フェス」の参加要項を確認しても「参加対象となるゲームがない」旨 表示されており、招待メールも来ていませんでした。
具体的な日数は不明ですが割引率などを入力できるフェス準備期間が1ヶ月半以上確保されるスケジュールとのことですから、当社のゲームが招待されていなかったのはフェス開催の3ヶ月 以上前に要項ページをチェックしたから、つまり、早すぎたからまだ登録されていなかっただけの可能性もあります。
[フェス要項に合致しているのに「参加対象なし」とされた場合の参加方法]
フェス概要ページには、ゲームの参加要請フォームが設置されています。
自社・自チームのゲームから、参加対象としてふさわしいと思われるものを選択し、 フリーの文章入力で、いかにこのゲームがフェスのテーマに合致しているかを入力して送信します。
Steamを運営するValve社はアメリカの会社であるため英語で申請しました。そして数営業日後、参加申請が認められた旨メールが届きました。
上記のメール受信後、SteamWorksのフェス要項ページ内「参加対象ゲーム」欄には、申請したゲーム名が示されていました。すでに登録されていたか、さらに登録ボタンを押したのかは失念しましたが無事 登録完了しました。
なお、すでに参加が決定している場合は、「参加対象ゲーム」ではなく「登録済みゲーム」として表示されます。
[参加申請では何に気をつければいいか]
当社のように、自動承認ではなく手動で参加表明を行ったケースにおいて、(どれほど効果があったのかは不明ですが)工夫した点を述べます。
ます、フェスのテーマ(今回は「弾幕シューティング」)と合致していることを改めて確認しました。
例え同じシューティングであってもFPSやTPS、ヒーローシューター、ガンシューティングは対象外であり、 また、古典的な強制スクロールシューティングであっても、弾がまばらで敵も味方も数発ずつしかショットをしないもの、弾幕を展開しないものは対象外です。
この点はクリアしていましたし、フェス対象となるようなジャンルのタグも複数ついていることを確認しました。
フェスの対象になるにはそのゲームの格となるメイン部分が要項に合致する必要があります。例え弾幕を含んでいるとしてもそれがミニゲームやおまけ、あるいは、 ゲームの一部の要素でしかない場合は対象外となる可能性があります。
当社のゲームは、弾幕シューティングであることがメインの要素であるため、この点もクリアしていました。
審査で重要視される基準はSteam社員や審査員からではなく、一般のユーザーから見てこのゲームがフェステーマと合致していると明確に分かるか?です。
つまりストアの概要やPV、スクリーンショット、説明文、タグが重要となるのですが、少し弱かったため手直しをしました。
ストアでは何度か「弾幕」という言葉を用いていましたが、それ以外は「シューティングゲーム」「ShootorGame」「Shmup」「STG」などと表現していました。
これは古典的な非弾幕シューティングを指すこともある言葉であるため、もっと積極的に「弾幕シューティング」や「BulletHell(バレットヘル)」という言葉を用いるように書き換えました。
PV映像については中身の変更はしていませんが、スクリーンショットは一部、より弾が沢山表示されている画像に差し替えたと思います。
それでも本作には「登場人物が全員美男子」という他のSTGにはあまり見られない特徴があるため、会話シーンなど非弾幕的な要素も残しました。
以上のように、一般Steamユーザーにとって弾幕シューティングであることが分かりやすいようにしつつ、Valve社(Steamチーム)への参加申請の際は、 「PVにもスクリーンショットにも大量の弾幕の展開されている場面が存在する」こと、ストアの文言で「弾幕」要素を強調したこと、 元より「弾幕」、「一騎当千型シューティング」のタグが付いていること、それが当ゲームのメイン要素であることを伝えました。
[フェス期間中の割引は必要か?]
必ずしも割引する必要はありませんが、割引を行った方がより目立つ扱いをされやすいとのことです。セール中の割引率はSteamWorksの中で変更・設定できます。過去の最大割引率と見比べることもできます。
フェスの期間が終了すると自動的に元の価格に戻ります。
割引を設定した場合、フェス期間中のストアページで通常価格から何%引かれているかが目立つように緑色で表示されます。
また、ストアにはフェス共通バナーが表示され、フェスに参加中であることが一目で分かります。
カテゴリ Steam関連
[Unity6.2]Prefab編集中スプライトの表示が真っ黒の原因[2D/URP]
以下に述べる内容は、Unity6.2(Ver.6000.2.7f2)の2D/Universal Render Pipeline(UniversalRP または URP) プロジェクトについてものです。別バージョンではメニュー内容等が異なります。
[不具合の前提]
SpriteRenderer(スプライトレンダラー)を含むPrefab(プレハブ)を編集中モードにします。
※Assets内のPrefabオブジェクトをダブルクリックしたりヒエラルキーに置いたPrefabの右にある>マークをクリックしたりするとこのモードになります。
今回の不具合は、PrefabのSpriteRenderer内Sprite欄に画像がセットされており、そのColorが白RGB(255,255,255)で不透明度100%(Alpha=255)なのに、 Unityエディタ上のシーンビューで表示が真っ黒になった状態です。
(Prefab編集中ではないシーンビューやゲームビューでは真っ黒にならない)
ここで、SpriteRendererのMaterialが「Sprite-Lit-Default」など 2D Lights(2Dライト)の影響を受けるマテリアルである場合のみ以下の原因が疑われます。
[シーンビューの描画モードが影まで演算している]

シーンビューの描画モードバーにおいて、三日月のような影の付いた球体を選択した状態になっている場合、それは「Shaded Draw Mode」です。
Spriteが2Dライトを受けた光と影の状態を再現しますが、Prefabの中に2Dライトを含まない場合、光源がないので真っ黒になります。
(ここでは行いませんが、もしPrefab編集中にヒエラルキーで右クリック→空のオブジェクト→Light→Sprite Light 2Dなどを新たに設置すると「Shaded Draw Mode」であっても光を受けて正常に表示されます)
[2Dライトを追加しないままSpriteを表示する方法]

「Shaded Draw Mode」の左隣にある塗りつぶされた円、または、球体のアイコンをクリックし「Unlit Draw Mode」に切り替えると、 2Dライトや影の影響を受けずにSpriteが表示されるようになります。
[どんな時にPrefab編集中の影、光の影響をOFFにしたいのか]
筆者のゲーム開発中にこの不具合が起きたのは、すでにPrefab化されている、それでいて、シーン内にはまだインスタンス(実体化)されていない NPCキャラクターに新しいアニメ―ションを追加しようとした時でした。
Prefabを開いてCtrl+6のショートカットキーからAnimationClip(アニメクリップ)の録画を開始し、SpriteRendererのSprite欄に画像をセットしたところ、 真っ黒になったのです。
この状態ではアニメーションの編集が困難です。
そこで、シーンビューの描画モードを「Unlit Draw Mode」に切り替えることで、Prefab編集中でも影や光の影響を受けずにSpriteが 表示され、スムーズな編集が行えるようになりました。
なお、NPCキャラクターのPrefabはシーン内に複数インスタンスするのですが、 ゲーム内の明るさは別の全体ライトによって制御されているため各Prefabに2Dライトを持たせる必要はありませんでした。
[まとめ]
Unity6の2D/URPプロジェクトで、Prefab編集中にSpriteRendererのSpriteが真っ黒になってしまう原因は、 シーンビューの描画モードが「Shaded Draw Mode」になっていることが考えられます。「Unlit Draw Mode」に切り替えましょう。
また、冒頭で申しました通り、他のバージョンではメニューが異なり「Unlit Draw Mode」のないこともございます。Unityの公式ドキュメントにある古いバージョンでは描画モードの種類や内容が異なっていました。
カテゴリ ゲーム開発
[不具合の前提]
SpriteRenderer(スプライトレンダラー)を含むPrefab(プレハブ)を編集中モードにします。
※Assets内のPrefabオブジェクトをダブルクリックしたりヒエラルキーに置いたPrefabの右にある>マークをクリックしたりするとこのモードになります。
今回の不具合は、PrefabのSpriteRenderer内Sprite欄に画像がセットされており、そのColorが白RGB(255,255,255)で不透明度100%(Alpha=255)なのに、 Unityエディタ上のシーンビューで表示が真っ黒になった状態です。
(Prefab編集中ではないシーンビューやゲームビューでは真っ黒にならない)
ここで、SpriteRendererのMaterialが「Sprite-Lit-Default」など 2D Lights(2Dライト)の影響を受けるマテリアルである場合のみ以下の原因が疑われます。
[シーンビューの描画モードが影まで演算している]

シーンビューの描画モードバーにおいて、三日月のような影の付いた球体を選択した状態になっている場合、それは「Shaded Draw Mode」です。
Spriteが2Dライトを受けた光と影の状態を再現しますが、Prefabの中に2Dライトを含まない場合、光源がないので真っ黒になります。
(ここでは行いませんが、もしPrefab編集中にヒエラルキーで右クリック→空のオブジェクト→Light→Sprite Light 2Dなどを新たに設置すると「Shaded Draw Mode」であっても光を受けて正常に表示されます)
[2Dライトを追加しないままSpriteを表示する方法]

「Shaded Draw Mode」の左隣にある塗りつぶされた円、または、球体のアイコンをクリックし「Unlit Draw Mode」に切り替えると、 2Dライトや影の影響を受けずにSpriteが表示されるようになります。
[どんな時にPrefab編集中の影、光の影響をOFFにしたいのか]
筆者のゲーム開発中にこの不具合が起きたのは、すでにPrefab化されている、それでいて、シーン内にはまだインスタンス(実体化)されていない NPCキャラクターに新しいアニメ―ションを追加しようとした時でした。
Prefabを開いてCtrl+6のショートカットキーからAnimationClip(アニメクリップ)の録画を開始し、SpriteRendererのSprite欄に画像をセットしたところ、 真っ黒になったのです。
この状態ではアニメーションの編集が困難です。
そこで、シーンビューの描画モードを「Unlit Draw Mode」に切り替えることで、Prefab編集中でも影や光の影響を受けずにSpriteが 表示され、スムーズな編集が行えるようになりました。
なお、NPCキャラクターのPrefabはシーン内に複数インスタンスするのですが、 ゲーム内の明るさは別の全体ライトによって制御されているため各Prefabに2Dライトを持たせる必要はありませんでした。
[まとめ]
Unity6の2D/URPプロジェクトで、Prefab編集中にSpriteRendererのSpriteが真っ黒になってしまう原因は、 シーンビューの描画モードが「Shaded Draw Mode」になっていることが考えられます。「Unlit Draw Mode」に切り替えましょう。
また、冒頭で申しました通り、他のバージョンではメニューが異なり「Unlit Draw Mode」のないこともございます。Unityの公式ドキュメントにある古いバージョンでは描画モードの種類や内容が異なっていました。
カテゴリ ゲーム開発
[Unity6.2]Consoleの重複ログ折りたたみを解除する方法[Collapse]
以下に述べる内容は、Unity6.2(Ver.6000.2.7f2)についてものです。
⚠️これより古い、または、新しいバージョンでは、当記事とレイアウト等の異なる可能性が高いのでご注意ください。
[ログを折りたたむCollapse]
Console(コンソール)は、Unity6のデフォルト配置だと画面下の方にある領域です。ここでは、デバッグログやエラーが表示されます。

「Consoleタブ」の一段下にあるバーには、左から、「Clear∇」「Collapse」「Error Pause」「Editor∇」というボタンが並んでいます。
この内、左から2番目の「Collapse(コラプス)」ボタンは、同じ内容のログを折りたたむ機能です。
※Collapse=折りたたむ
「Collapse」ボタンがOn(有効)になっていると、同じ内容のログが折りたたまれて表示されます。
On(有効)の場合、ボタンの色はやや明るい灰色になっています。
Console各行の右端に数字が書いてあります。これは、同じログが何回出ているかを表しています。
※同じログ=同クラスの同メソッドが実行された際のログ。厳密にはタイムスタンプや変数の値などが異なる。
[ログを折りたたまない方法]
重複する同じログを折りたたまないでほしい場合は、On(有効)状態の「Collapse」ボタンを押してOff(無効)にします。
ボタンはトグル式なので、Onの時に押せばOffになり、Offの時に押せばOnになります。

「Collapse」ボタンがOff(無効)の時は、背景色と同じ暗い灰色をしています。同じ内容のログでも折りたたまれず時系列順に表示されます。
[折りたたみをせず全てのログを展開したいケース]
あるバグについて原因を特定したい時に、沢山のデバッグログを入れてどこまで正しく処理され、どこからおかしくなっているのかを確認したいことがあります。
そんな時に折りたたみがOnだと、ゲーム実行開始から何度も行われる処理は上の方に残って、その処理回数だけが更新されます。
コンソールは最新=一番下に合わせてスクロールするため表示範囲から外れます。
これでは、特定の操作をした瞬間にバグが生じても見逃してしまいます。
また、後からログを遡っても、タイムスタンプの並び順が時系列ではないために大変読みにくいです。
そこで、「Collapse」をOff(無効)にして折りたたみを解除します。
最新のログは個別に、かつ、一番下に表示されるため、特定の操作をした瞬間のログが即座に確認できます。
カテゴリ ゲーム開発
⚠️これより古い、または、新しいバージョンでは、当記事とレイアウト等の異なる可能性が高いのでご注意ください。
[ログを折りたたむCollapse]
Console(コンソール)は、Unity6のデフォルト配置だと画面下の方にある領域です。ここでは、デバッグログやエラーが表示されます。

「Consoleタブ」の一段下にあるバーには、左から、「Clear∇」「Collapse」「Error Pause」「Editor∇」というボタンが並んでいます。
この内、左から2番目の「Collapse(コラプス)」ボタンは、同じ内容のログを折りたたむ機能です。
※Collapse=折りたたむ
「Collapse」ボタンがOn(有効)になっていると、同じ内容のログが折りたたまれて表示されます。
On(有効)の場合、ボタンの色はやや明るい灰色になっています。
Console各行の右端に数字が書いてあります。これは、同じログが何回出ているかを表しています。
※同じログ=同クラスの同メソッドが実行された際のログ。厳密にはタイムスタンプや変数の値などが異なる。
[ログを折りたたまない方法]
重複する同じログを折りたたまないでほしい場合は、On(有効)状態の「Collapse」ボタンを押してOff(無効)にします。
ボタンはトグル式なので、Onの時に押せばOffになり、Offの時に押せばOnになります。

「Collapse」ボタンがOff(無効)の時は、背景色と同じ暗い灰色をしています。同じ内容のログでも折りたたまれず時系列順に表示されます。
[折りたたみをせず全てのログを展開したいケース]
あるバグについて原因を特定したい時に、沢山のデバッグログを入れてどこまで正しく処理され、どこからおかしくなっているのかを確認したいことがあります。
そんな時に折りたたみがOnだと、ゲーム実行開始から何度も行われる処理は上の方に残って、その処理回数だけが更新されます。
コンソールは最新=一番下に合わせてスクロールするため表示範囲から外れます。
これでは、特定の操作をした瞬間にバグが生じても見逃してしまいます。
また、後からログを遡っても、タイムスタンプの並び順が時系列ではないために大変読みにくいです。
そこで、「Collapse」をOff(無効)にして折りたたみを解除します。
最新のログは個別に、かつ、一番下に表示されるため、特定の操作をした瞬間のログが即座に確認できます。
カテゴリ ゲーム開発
[Unity]EventSystem/EventTriggerの初回クリック不発原因
Unity6.2(Ver.6000.2.7f2)でのスクリプトを想定しているため、以下の記述例は
C# です。
EventSystemは、ImageなどのUI要素とともに用い、マウスポインターやボタン操作を感知する機能です。
現在開発中の縄文時代シミュレーションゲーム(以下、「縄文シミュ」)において、次のような不具合が起こっていました。
・クラフトパネルの分類タブのいずれかをクリックしてクラフト可能アイテムリストを更新すると、その後、最初のアイテムクリックが不発になる。
・2回目以降のクリックは正常に動作する。
・あらかじめアイテムアイコン上ではないリスト内領域をクリックしてからアイテムアイコンをクリックすると、初回でも正常に動作する

[他の一般的な不具合ではないことを確認]
・EventSystemがシーンに存在しているか?
・ImageオブジェクトにEvent Triggerをアタッチしているか?
・Imageの Raycas Target にチェックが入っているか?
・重なり合うImageやパネル要素のRaycastTargetにチェックが入っていないか?(入っているとレイキャストの判定を吸われ、ガードされてしまう)
・ButtonのOnClick()などと競合していないか?
「縄文シミュ」では、上記はすべて確認済みで、問題はありませんでした。
[クリック不発原因]
タブをクリックしてリストを更新した後、EventSystemのSelected(選択中状態)が残ったままになっているため、 最初のアイテムクリックが不発になると考えられます。
[解決方法]
リストを更新するメソッドの最後で、明示的にEventSystemのSelected(選択中状態)を解除すると最初のクリックが正常に動作します。
以下は、EventSystem.current.SetSelectedGameObject(null); を呼び出して、Selectedをリセットするスクリプト例です。
[選択解除コードはどこに書くか]
「縄文シミュ」特有の事情ですが……
1.カテゴリタブがクリックされると「クラフト総合管理」クラス内の「選択カテゴリ変更」メソッドが実行されます。
2.「選択カテゴリ変更」メソッドから外部クラス「道具リスト管理」「土器リスト管理」「建築リスト管理」いずれかの「リスト更新」メソッドが実行されます。
3.カテゴリ別「リスト更新」メソッドの最後に、選択解除のコードを入れると、タブ切り替え後、最初のクリックが正常に動作するようになりました。
なお、「クラフト総合管理」クラスの「選択カテゴリ変更」メソッドから直接、外部クラスの「リスト更新」メソッド実行とEventSystem選択解除を同時に行った場合は、 リスト更新後最初のクリックが不発となり失敗しました。
結論:実際にリスト更新を行うメソッド内の一番最後で、選択解除を行うと良い。
[EventSystemをスクリプトから扱う時の注意点]
選択対象としたい、または、選択を解除したいオブジェクトにImage(Event Triggerアタッチ済み)やButton等の選択可能なUI要素がアタッチされていることを確認します。
そもそも選択可能なUI要素がないとその操作ができないからです。
実際の「縄文シミュ」では、アイテムアイコンPrefabの親はUI要素のない空のオブジェクトで、Imageはその子要素であるため、 親オブジェクト経由で子オブジェクトやそのスクリプトを指定して選択状態を変更しています。
最初は、この親オブジェクトに対して選択解除を行おうとして失敗しました。
[最初から選択したいオブジェクトの指定]
パネルを開いた時やリストが更新された時、自動的に特定のオブジェクトを選択状態にしたい場合は、 EventSystem.current.SetSelectedGameObject(選択したいオブジェクト); として、引数に選択したいオブジェクトを指定します。
[動的生成オブジェトの最初の要素を選択する方法]
publicなGameObjectをインスペクターから指定する方式では、リスト更新の度に動的生成されるprefabゲームオブジェクトを選択することができないため、 他の方法を用います。

前提として、リスト更新メソッドではデータベースから取得した情報をもとにアイテムアイコンのprefabゲームオブジェクトを生成(Instantiate)しています。
foreachを使用して繰り返しオブジェクトを生成するため、最初のオブジェクトを別枠で記録しておく必要があります。
また、これも「縄文シミュ」特有なのですが、生成したオブジェクト側のスクリプトを取得し、 その中のメソッドを実行しないとUIにアイテム詳細が表示されず「最初から選択された」という風には見えないため、 リスト最初のアイテムを選択中にした上で、メソッド実行も行います。
【関連記事】
野良箱 | ゲーム制作のWIP(Work in progress)ログ
外部の個人ブログでは「縄文シミュ」開発過程で発生した不具合とその解決方法を逐次公開しています。
カテゴリ ゲーム開発
C# です。
EventSystemは、ImageなどのUI要素とともに用い、マウスポインターやボタン操作を感知する機能です。
現在開発中の縄文時代シミュレーションゲーム(以下、「縄文シミュ」)において、次のような不具合が起こっていました。
・クラフトパネルの分類タブのいずれかをクリックしてクラフト可能アイテムリストを更新すると、その後、最初のアイテムクリックが不発になる。
・2回目以降のクリックは正常に動作する。
・あらかじめアイテムアイコン上ではないリスト内領域をクリックしてからアイテムアイコンをクリックすると、初回でも正常に動作する

[他の一般的な不具合ではないことを確認]
・EventSystemがシーンに存在しているか?
・ImageオブジェクトにEvent Triggerをアタッチしているか?
・Imageの Raycas Target にチェックが入っているか?
・重なり合うImageやパネル要素のRaycastTargetにチェックが入っていないか?(入っているとレイキャストの判定を吸われ、ガードされてしまう)
・ButtonのOnClick()などと競合していないか?
「縄文シミュ」では、上記はすべて確認済みで、問題はありませんでした。
[クリック不発原因]
タブをクリックしてリストを更新した後、EventSystemのSelected(選択中状態)が残ったままになっているため、 最初のアイテムクリックが不発になると考えられます。
[解決方法]
リストを更新するメソッドの最後で、明示的にEventSystemのSelected(選択中状態)を解除すると最初のクリックが正常に動作します。
以下は、EventSystem.current.SetSelectedGameObject(null); を呼び出して、Selectedをリセットするスクリプト例です。
Sample.cs(C#)
using UnityEngine;
using UnityEngine.EventSystem; //EventSystemを使うための宣言
public class Sample : MonoBehaviour
{
public void ListUpdate()
{
//ここにリストを更新するメソッドの記述(省略)
EventSystem.current.SetSelectedGameObject(null);
}
}
このコードの意味は、「今は何も選んでいないよ」「選択中のオブジェクトはないよ」です。using UnityEngine.EventSystem; //EventSystemを使うための宣言
public class Sample : MonoBehaviour
{
public void ListUpdate()
{
//ここにリストを更新するメソッドの記述(省略)
EventSystem.current.SetSelectedGameObject(null);
}
}
[選択解除コードはどこに書くか]
「縄文シミュ」特有の事情ですが……
1.カテゴリタブがクリックされると「クラフト総合管理」クラス内の「選択カテゴリ変更」メソッドが実行されます。
2.「選択カテゴリ変更」メソッドから外部クラス「道具リスト管理」「土器リスト管理」「建築リスト管理」いずれかの「リスト更新」メソッドが実行されます。
3.カテゴリ別「リスト更新」メソッドの最後に、選択解除のコードを入れると、タブ切り替え後、最初のクリックが正常に動作するようになりました。
なお、「クラフト総合管理」クラスの「選択カテゴリ変更」メソッドから直接、外部クラスの「リスト更新」メソッド実行とEventSystem選択解除を同時に行った場合は、 リスト更新後最初のクリックが不発となり失敗しました。
結論:実際にリスト更新を行うメソッド内の一番最後で、選択解除を行うと良い。
[EventSystemをスクリプトから扱う時の注意点]
選択対象としたい、または、選択を解除したいオブジェクトにImage(Event Triggerアタッチ済み)やButton等の選択可能なUI要素がアタッチされていることを確認します。
そもそも選択可能なUI要素がないとその操作ができないからです。
実際の「縄文シミュ」では、アイテムアイコンPrefabの親はUI要素のない空のオブジェクトで、Imageはその子要素であるため、 親オブジェクト経由で子オブジェクトやそのスクリプトを指定して選択状態を変更しています。
最初は、この親オブジェクトに対して選択解除を行おうとして失敗しました。
[最初から選択したいオブジェクトの指定]
パネルを開いた時やリストが更新された時、自動的に特定のオブジェクトを選択状態にしたい場合は、 EventSystem.current.SetSelectedGameObject(選択したいオブジェクト); として、引数に選択したいオブジェクトを指定します。
Sample.cs(C#)
using UnityEngine;
using UnityEngine.EventSystem; //EventSystemを使うための宣言
public class Sample : MonoBehaviour
{
public GameObject selectedObject; //選択したいオブジェクト
public void ListUpdate()
{
//リストを更新するメソッドの記述(省略)
EventSystem.current.SetSelectedGameObject(selectedObject);
}
}
using UnityEngine.EventSystem; //EventSystemを使うための宣言
public class Sample : MonoBehaviour
{
public GameObject selectedObject; //選択したいオブジェクト
public void ListUpdate()
{
//リストを更新するメソッドの記述(省略)
EventSystem.current.SetSelectedGameObject(selectedObject);
}
}
[動的生成オブジェトの最初の要素を選択する方法]
publicなGameObjectをインスペクターから指定する方式では、リスト更新の度に動的生成されるprefabゲームオブジェクトを選択することができないため、 他の方法を用います。

前提として、リスト更新メソッドではデータベースから取得した情報をもとにアイテムアイコンのprefabゲームオブジェクトを生成(Instantiate)しています。
foreachを使用して繰り返しオブジェクトを生成するため、最初のオブジェクトを別枠で記録しておく必要があります。
また、これも「縄文シミュ」特有なのですが、生成したオブジェクト側のスクリプトを取得し、 その中のメソッドを実行しないとUIにアイテム詳細が表示されず「最初から選択された」という風には見えないため、 リスト最初のアイテムを選択中にした上で、メソッド実行も行います。
Sample.cs(C#)
using UnityEngine;
using UnityEngine.EventSystem; //EventSystemを使うための宣言
public class Sample : MonoBehaviour
{
public GameObject itemPrefab; //アイテムアイコンのprefab
public void ListUpdate()
{
GameObject firstObject = null;
//最初のオブジェクトを記録する変数
foreach(var item in itemList)
{
//リストを更新するメソッドの記述(省略)
GameObject go = Instantiate(itemPrefab);
//アイテムアイコンのprefabゲームオブジェクトを生成
if(firstObject == null)
{
firstObject = go; //最初のオブジェクトを記録
//以降firstObjectはnullではなくなるので記録されない
}
//(中略)
} //ここまでforeach
if(firstObject != null) //firstObjectがnullでない時
{
EventSystem.current.SetSelectedGameObject(firstObject);
//最初のオブジェクトを選択状態にする
var firstSend= firstCard.GetComponent<SendScript>();
firstSend.InfoSend();
//「クラフト総合管理」にアイテム情報を送信するメソッド
EventSystem.current.SetSelectedGameObject(firstObject);
//最初のオブジェクトを選択状態にする。
}
else
{
EventSystem.current.SetSelectedGameObject(null);
}
} //ListUpdate()メソッドここまで
}
※実際の「縄文シミュ」では、アイテムアイコンPrefab(親)はUI要素を持たない空のオブジェクトであるため、
それに対してEventSystemスクリプトを用いても選択状態を指定・解除することができません。UI要素を持つ子オブジェクトに対して同じことを行っています。using UnityEngine.EventSystem; //EventSystemを使うための宣言
public class Sample : MonoBehaviour
{
public GameObject itemPrefab; //アイテムアイコンのprefab
public void ListUpdate()
{
GameObject firstObject = null;
//最初のオブジェクトを記録する変数
foreach(var item in itemList)
{
//リストを更新するメソッドの記述(省略)
GameObject go = Instantiate(itemPrefab);
//アイテムアイコンのprefabゲームオブジェクトを生成
if(firstObject == null)
{
firstObject = go; //最初のオブジェクトを記録
//以降firstObjectはnullではなくなるので記録されない
}
//(中略)
} //ここまでforeach
if(firstObject != null) //firstObjectがnullでない時
{
EventSystem.current.SetSelectedGameObject(firstObject);
//最初のオブジェクトを選択状態にする
var firstSend= firstCard.GetComponent<SendScript>();
firstSend.InfoSend();
//「クラフト総合管理」にアイテム情報を送信するメソッド
EventSystem.current.SetSelectedGameObject(firstObject);
//最初のオブジェクトを選択状態にする。
}
else
{
EventSystem.current.SetSelectedGameObject(null);
}
} //ListUpdate()メソッドここまで
}
【関連記事】
野良箱 | ゲーム制作のWIP(Work in progress)ログ
外部の個人ブログでは「縄文シミュ」開発過程で発生した不具合とその解決方法を逐次公開しています。
カテゴリ ゲーム開発
子ども・子育て支援金制度に対応
2026年(令和8年)4月から「子ども・子育て支援金制度(以下、「支援金制度」とします)」が始まりました。これは、事業主(会社・法人)だけが負担する「子ども・子育て拠出金」とは異なり、
事業主と従業員が折半(半分ずつ負担)するものです。
注意:この記事を書いている者は社会保険についての専門知識も資格も有しておりません。
今月(5月支払分)の給与から支援金制度への対応を行う会社がほとんどでしょうが、当社(当月締め・当月支払い)の場合は4月分の給与支払い時点で対応が必要でした。
当社使用の給与計算ソフトは5月16日現在すでに支援金制度について自動計算が可能です。
しかし、先月の段階では未対応で、手計算を行いました。
給与計算ソフトを使わずに子ども・子育て支援金を手計算する方法
当社も加入している協会けんぽ(全国健康保険協会)の公式サイトでは、3月の段階でこの制度に関する料金表が公表されていました。
既存の「健康保険料・介護保険料」、「厚生年金保険料」に追加する形で「子ども・子育て支援金[令和8年4月分(5月納付分)から納付]」の欄があります。
この表は、所属している地方の協会けんぽサイトではなく、全国版サイトの中の「都道府県毎の保険料額表」の中から該当する表を探した方が早く見つかります。(以下、「保険料額表」とします)
「保険料額表」を印刷した紙は郵送でも届きました。別途「標準報酬月額×〇〇%」だけ大きく書かれたお知らせも同封されていましたが、実際に給与計算する時はこれではなく前述の「保険料額表」の数値を直接使った方が安全です。
表の見方ですが、等級・標準月額報酬の範囲に給与(控除前)が当てはまる行の「子ども・子育て支援金」欄に入った「全額」と「折半額」を確認します。
この「折半額」は、事業主と従業員がそれぞれ負担する額となり、従業員給与から控除する額はこの「折半額」となります。
ここで、この「折半額」に小数点以下の端数がある場合の扱いですが、当社のように「事業主が、従業員の給与からその負担分を控除する」場合、 従業員負担分の端数が50銭(0.5円)以下の 場合は切り捨て、50銭(0.5円)を超える場合は切り上げて1円として扱います。
四捨五入ではなく、50銭(0.5円)捨50銭1厘(0.501円)入というルールのようで、従業員負担が ちょうど50銭(0.5円)の場合は、「以下」に含まれるので切り捨てて端数は0になります。
「保険料額表」の全額から従業員負担を引いた額が事業主負担額となります。
給与明細では、従業員負担分は整数、事業主負担分は小数点まで表示されます。
なお、必ずしも事業主負担の方が大きくなるわけではありません。
例:折半額の端数が0.8円の場合
A従業員負担:切り上げて1円
B従業員が折半額より多く負担した端数:1-0.8=0.2円
C事業主負担:0.8-0.2円(B)=0.6円
A:1円(従業員負担)>C:0.6円(事業主負担)
このように、折半額の端数が切り上げとなった場合は、従業員負担の方が大きくなります。
最終的に事業主が社会保険として納付する額は「保険料額表」の「全額」となります。
余談:社会保険料改定が3月 & 介護保険料が合算の件
通常企業では4月支払の給与分から健康保険・厚生年金保険料が改定となり給与計算ソフトも対応済みになっていますが、当社の場合は3月支払い給与から適用されるため、 こちらも「保険料額表」に従い手計算を行っていました。
「保険料額表」に対するリクエストとして、保険加入者(従業員)の年齢が40歳以上で全員加入となる「介護保険」を、年齢無制限の「健康保険料」と合算しないでいただきたいのです。
「保険料額表」には、介護保険料なし(介護保険第2号被保険者に該当しない場合) と 介護保険料あり(健康保険介護保険第2号被保険者に該当する場合) の 介護保険・健康保険料に ついてそれぞれ全額表・折半表が掲載され、従業員の年齢によって該当する方の欄を確認するシステムなのですが、 給与明細には健康保険料と介護保険料を分けて記載するため、毎年二つの表の差額をから介護保険料を計算しています。
最初から健康保険料(基本)と介護保険料の欄を分けていただければ、40歳以上の従業員についてのみ介護保険の行も使用するという使い方が出来て助かります。
しかしそうしないということは標準報酬月額に直接保険料率が適用されているので分離が難しいという事情でもあるのでしょうか?
当社の属する青森県の場合は介護保険なしの健康保険料・介護保険料率が9.85%、ありで11.47%です。
折半・従業員負担額の計算が合っているのか否か、たった1円の違いですが翌月の請求まで正解が分からずハラハラして過ごすこととなります。
現在では、先月納付予定とした健康保険料、介護保険料、厚生年金保険料、子ども・子育て支援金、子ども・子育て拠出金の全額が、社会保険の正式な支払通知、および、給与計算ソフトの自動計算と数値が合致していることが分かっておりほっとしております。
上記の内容に誤りのある場合、お手数ですが「お問い合わせ」からご指摘いただけると幸いです。記述を訂正いたします。
カテゴリ 会社運営
注意:この記事を書いている者は社会保険についての専門知識も資格も有しておりません。
今月(5月支払分)の給与から支援金制度への対応を行う会社がほとんどでしょうが、当社(当月締め・当月支払い)の場合は4月分の給与支払い時点で対応が必要でした。
当社使用の給与計算ソフトは5月16日現在すでに支援金制度について自動計算が可能です。
しかし、先月の段階では未対応で、手計算を行いました。
給与計算ソフトを使わずに子ども・子育て支援金を手計算する方法
当社も加入している協会けんぽ(全国健康保険協会)の公式サイトでは、3月の段階でこの制度に関する料金表が公表されていました。
既存の「健康保険料・介護保険料」、「厚生年金保険料」に追加する形で「子ども・子育て支援金[令和8年4月分(5月納付分)から納付]」の欄があります。
この表は、所属している地方の協会けんぽサイトではなく、全国版サイトの中の「都道府県毎の保険料額表」の中から該当する表を探した方が早く見つかります。(以下、「保険料額表」とします)
「保険料額表」を印刷した紙は郵送でも届きました。別途「標準報酬月額×〇〇%」だけ大きく書かれたお知らせも同封されていましたが、実際に給与計算する時はこれではなく前述の「保険料額表」の数値を直接使った方が安全です。
表の見方ですが、等級・標準月額報酬の範囲に給与(控除前)が当てはまる行の「子ども・子育て支援金」欄に入った「全額」と「折半額」を確認します。
この「折半額」は、事業主と従業員がそれぞれ負担する額となり、従業員給与から控除する額はこの「折半額」となります。
ここで、この「折半額」に小数点以下の端数がある場合の扱いですが、当社のように「事業主が、従業員の給与からその負担分を控除する」場合、 従業員負担分の端数が50銭(0.5円)以下の 場合は切り捨て、50銭(0.5円)を超える場合は切り上げて1円として扱います。
四捨五入ではなく、50銭(0.5円)捨50銭1厘(0.501円)入というルールのようで、従業員負担が ちょうど50銭(0.5円)の場合は、「以下」に含まれるので切り捨てて端数は0になります。
「保険料額表」の全額から従業員負担を引いた額が事業主負担額となります。
給与明細では、従業員負担分は整数、事業主負担分は小数点まで表示されます。
なお、必ずしも事業主負担の方が大きくなるわけではありません。
例:折半額の端数が0.8円の場合
A従業員負担:切り上げて1円
B従業員が折半額より多く負担した端数:1-0.8=0.2円
C事業主負担:0.8-0.2円(B)=0.6円
A:1円(従業員負担)>C:0.6円(事業主負担)
このように、折半額の端数が切り上げとなった場合は、従業員負担の方が大きくなります。
最終的に事業主が社会保険として納付する額は「保険料額表」の「全額」となります。
余談:社会保険料改定が3月 & 介護保険料が合算の件
通常企業では4月支払の給与分から健康保険・厚生年金保険料が改定となり給与計算ソフトも対応済みになっていますが、当社の場合は3月支払い給与から適用されるため、 こちらも「保険料額表」に従い手計算を行っていました。
「保険料額表」に対するリクエストとして、保険加入者(従業員)の年齢が40歳以上で全員加入となる「介護保険」を、年齢無制限の「健康保険料」と合算しないでいただきたいのです。
「保険料額表」には、介護保険料なし(介護保険第2号被保険者に該当しない場合) と 介護保険料あり(健康保険介護保険第2号被保険者に該当する場合) の 介護保険・健康保険料に ついてそれぞれ全額表・折半表が掲載され、従業員の年齢によって該当する方の欄を確認するシステムなのですが、 給与明細には健康保険料と介護保険料を分けて記載するため、毎年二つの表の差額をから介護保険料を計算しています。
最初から健康保険料(基本)と介護保険料の欄を分けていただければ、40歳以上の従業員についてのみ介護保険の行も使用するという使い方が出来て助かります。
しかしそうしないということは標準報酬月額に直接保険料率が適用されているので分離が難しいという事情でもあるのでしょうか?
当社の属する青森県の場合は介護保険なしの健康保険料・介護保険料率が9.85%、ありで11.47%です。
折半・従業員負担額の計算が合っているのか否か、たった1円の違いですが翌月の請求まで正解が分からずハラハラして過ごすこととなります。
現在では、先月納付予定とした健康保険料、介護保険料、厚生年金保険料、子ども・子育て支援金、子ども・子育て拠出金の全額が、社会保険の正式な支払通知、および、給与計算ソフトの自動計算と数値が合致していることが分かっておりほっとしております。
上記の内容に誤りのある場合、お手数ですが「お問い合わせ」からご指摘いただけると幸いです。記述を訂正いたします。
カテゴリ 会社運営
夢記録アプリ「夢ピン」配信開始
寝ている間に見た夢を、起きて即記録できる無料アプリ「夢ピン」が配信開始になりました。
配信プラットフォームはApp Store(for iOS)と Google Play(for Android)です。
プライバシーポリシーはこちら。

コンセプト
・忘れる前に夢をピン留め
特徴
・タグをタップして夢を記録
・2-3文字の入力でタグを絞り込める
・メモ欄が空のままでもタグからタイトルを自動生成
・リストやカレンダーで過去の夢を振り返る
・統計でよく見る夢が分かる
・ユーザーが新しいタグを追加/リネームできる
プライバシーの安全
・オフラインで完結
・アカウントなし、ログインなし
・データはユーザーの端末内に保存
・広告なし
・AI解析なし
・外部への送信なし
基本情報
・名称:夢ピン(Ja)/Dream Pin(En)/Pin de Sueños(Es)
・価格:無料
・配信プラットフォーム App Store(for iOS)・ Google Play(for Android)
・対応OS:iOS 13.0以降、Android 7.0(Nougat)以降
・配信開始日:2026年5月4日
・開発・運営:ボクステ株式会社
・対応言語:日本語(Ja)、英語(En)、スペイン語(Es)
・プライバシーポリシー:https://bocste.com/dreampin/policy.html
お問い合わせ
当アプリに何か問題やご質問等ございましたら当社メールフォームよりお問い合わせください。 ハンドルネームやメールアドレスは空欄のままで結構です。(返信が必要な場合はメールアドレスをご記入ください)
カテゴリ 広報
配信プラットフォームはApp Store(for iOS)と Google Play(for Android)です。
プライバシーポリシーはこちら。

コンセプト
・忘れる前に夢をピン留め
特徴
・タグをタップして夢を記録
・2-3文字の入力でタグを絞り込める
・メモ欄が空のままでもタグからタイトルを自動生成
・リストやカレンダーで過去の夢を振り返る
・統計でよく見る夢が分かる
・ユーザーが新しいタグを追加/リネームできる
プライバシーの安全
・オフラインで完結
・アカウントなし、ログインなし
・データはユーザーの端末内に保存
・広告なし
・AI解析なし
・外部への送信なし
基本情報
・名称:夢ピン(Ja)/Dream Pin(En)/Pin de Sueños(Es)
・価格:無料
・配信プラットフォーム App Store(for iOS)・ Google Play(for Android)
・対応OS:iOS 13.0以降、Android 7.0(Nougat)以降
・配信開始日:2026年5月4日
・開発・運営:ボクステ株式会社
・対応言語:日本語(Ja)、英語(En)、スペイン語(Es)
・プライバシーポリシー:https://bocste.com/dreampin/policy.html
お問い合わせ
当アプリに何か問題やご質問等ございましたら当社メールフォームよりお問い合わせください。 ハンドルネームやメールアドレスは空欄のままで結構です。(返信が必要な場合はメールアドレスをご記入ください)
カテゴリ 広報
Pay-easy(ペイジー)対応ATMなのに通帳で支払えないケース
Pay-easy(ペイジー)は、税金や公共料金を支払うためのシステムですが、Pay-easy対応済みのATMでも払込みできないことがあるのでご紹介します。
当社の場合、青森みちのく銀行のATMを利用しています。
Pay-easyメニューでは 通帳 または キャッシュカード を入れるように指示されるのですが、当社名義の通帳を入れたのち必要な番号、金額等を全て入力した最後で 「お取り扱いできません」と表示されて支払いに失敗します。
一方、キャッシュカードを入れた場合は正常に操作することが可能です。
なぜ、通帳の場合のみ失敗したのかと申しますと、通帳の種類 が「法人向け」であったためです。
青森みちのく銀行の 公式サイト によりますと、 「個人向け」では 通帳とキャッシュカードの両方に対応しているが、「法人向け」は キャッシュカード にのみ対応しているとのことです。
他の金融機関をご利用の方も、Pay-easy対応ATMに通帳を入れてエラーメッセージが出た場合、キャッシュカードでの支払いを試してください。
カテゴリ 会社運営
当社の場合、青森みちのく銀行のATMを利用しています。
Pay-easyメニューでは 通帳 または キャッシュカード を入れるように指示されるのですが、当社名義の通帳を入れたのち必要な番号、金額等を全て入力した最後で 「お取り扱いできません」と表示されて支払いに失敗します。
一方、キャッシュカードを入れた場合は正常に操作することが可能です。
なぜ、通帳の場合のみ失敗したのかと申しますと、通帳の種類 が「法人向け」であったためです。
青森みちのく銀行の 公式サイト によりますと、 「個人向け」では 通帳とキャッシュカードの両方に対応しているが、「法人向け」は キャッシュカード にのみ対応しているとのことです。
他の金融機関をご利用の方も、Pay-easy対応ATMに通帳を入れてエラーメッセージが出た場合、キャッシュカードでの支払いを試してください。
カテゴリ 会社運営
[Unity]string(文字列)の中に複数の変数を代入する方法[$"{}"][Replace]
Unity6.2(Ver.6000.2.7f2)でのスクリプトを想定しているため、以下の記述例は
C# です。
<用語>
変数 … 値を入れる箱のようなもの。
変数の型 … 変数に入れることができる値の種類。
string型 … 値が文字列の変数。
int型 … 値が整数の変数。
bool型 … 値がtrue(真)かfalse(偽)の変数。
<変数の例>
文字列はダブルクォーテーションで囲みます。
name="Takashi"; にすると、nameの中身が Alice から Takashi に変わります。 すでにnameの型はstringであると宣言しているので、以降は先頭にstringはつけず name="Ken"; と書いて良いです。
age=25; にすると、ageの中身が18から25に変わります。
<変数の代入>
次の文章テンプレートがあるとします。
「私の名前は〇〇で、年齢は△△歳です。」
〇〇にname、△△にageを入れる場合には次のような方法があります。
+ で繋ぐ方式
これは、"固定の文字列"+変数+"固定の文字列". のようにstring型の文章を繋ぐ形式で、変数が多くなると読みにくくなります。
実際に、Unity上でデバッグログとして表示する際には、以下のC#スクリプトを作ってヒエラルキーの空いたところにドラッグ&ドロップするか、空のオブジェクトを作ってそのインスペクターにドラッグ&ドロップしてからゲームを再生してください。

代入後に表示される文章例は「My name is Alice and I am 18 years old.」となります。
なお、これはstring型全般の特徴ですが、変数名として代入する時は、ダブルクォーテーションが不要です。
$"{ }" 方式
先頭に$をつけ、変数を{ }で囲むことにより、変数を文字列の中に直接代入できます。
+方式の時は、 " and I am "、" years old." のように" "で括った文字列の前後に変数が入った完成形を考慮して半角スペースを入れなくてはなりません。
一方、 $"{ }" 方式では、見かけ通りスペースを取れるため簡単です。
もし変数名の周りに{}をつけなかった場合、そのまま「name」という文字列として表示され、変数として働きません。
コンソールのデバッグログでキャラクターの名前を表示したい場合などは、
bool型でも同様に
Replace方式
上記の方法でも困るのがゲーム内での翻訳時です。
ゲーム内には、player_nameやnpc_name、enemy_nameなど複数の名前用変数が混在しがちです。
翻訳テンプレート内に{player_name}と書いた場合、呼び出し側のスクリプト内に string player_name;という変数があれば、その中身(例:"Alice","Takashi"など)が代入されます。
しかし、 npc_nameを入れたい時でもplayer_nameしか呼び出せません。
共通のテンプレートを使いまわして、異なる変数を代入する時に使えるのがRepcalce(置き換え)です。
bool型のisPlayerがtrue(プレイヤーである)時は、{name}にplayer_name、{age}にplayer_ageを代入し、それ以外の場合は、{name}にnpc_name、{age}にnpc_ageを代入しています。
このように、代入する変数が異なっても同じテンプレートで対応できます。

isPlayerがfalseの時の表示。プレイヤーのAliceではなくNPCのTom情報になっている。
Replaceと$"{}"の併用
文字列の一部に特定の色を付けるなど装飾したい時も文章テンプレート内にコードを書くのは煩雑ですし、後で文字色を変更したい時にテンプレート内のカラーコードを全て書き換えることになります。
Unityの文字は、TextMeshProを使うと、<color=#FF0000>赤文字</color>のように、特定の部分だけ色を変える ことができます。
Unityプロジェクトのヒエラルキー(デフォルトでは画面左端)の領域で右クリックし、UI>Text TextMeshPro を選択するとCanvasとその子としてのText用オブジェクトが作成されます。
ヒエラルキー欄
YourProject
|_Canvas
|_Text(TMP)

部分解説
このマークアップ言語方式は、Webサイトを作る時のHTMLとよく似ています。
player_name つまり現在だと Alice の前後にカラータグを入れた次の文字列を作っています。
<color=#FF0000>Alice</color>
これをTextMeshProのテキストウィンドウに入れると、Aliceと色付きで表示されます。

Unity内でゲームを実行時、TextMeshProのTextウィンドウにカラータグ付き文字列が生成されている。
結果(result)部分を抜粋すると次の通りです。
同様に、
繋げると、以下の表示となります。
英語 My name is Alice and I am 18 years old.
日本語 私の名前は、Alice です。年齢は 18 歳です。
※緑文字は白が背景だと視認性が悪いため黒背景にしていますがC#のコードには背景色変更コードが含まれません。
以上のように、Replace方式の中に$"{}"方式を含み2重代入することで、変数内の変化と文字色の変化を同時に編集できます。
これは、ゲームログやシステムメッセージに利用できで、npcやplayerの名前、獲得したアイテム名・個数などを色分けして見やすくできます。
当ブログに掲載されたコードはコピーペースト自由です。権利表記も要りません。無料の趣味でも有料の仕事用コードでも、お好きなようにお使いください。
※上記のままでは同じテキスト内容と文字色しか表示されませんので、変数名や型、値を改造しておつかい下さい。
カテゴリ ゲーム開発
C# です。
<用語>
変数 … 値を入れる箱のようなもの。
変数の型 … 変数に入れることができる値の種類。
string型 … 値が文字列の変数。
int型 … 値が整数の変数。
bool型 … 値がtrue(真)かfalse(偽)の変数。
<変数の例>
Sample.cs(C#)
string name = "Alice";
この場合、name(名前)というstring型の変数に Alice という文字列が入っています。文字列はダブルクォーテーションで囲みます。
name="Takashi"; にすると、nameの中身が Alice から Takashi に変わります。 すでにnameの型はstringであると宣言しているので、以降は先頭にstringはつけず name="Ken"; と書いて良いです。
Sample.cs(C#)
int age=18;
この場合、age(年齢)というint型の変数に18という整数が入っています。age=25; にすると、ageの中身が18から25に変わります。
<変数の代入>
次の文章テンプレートがあるとします。
「私の名前は〇〇で、年齢は△△歳です。」
〇〇にname、△△にageを入れる場合には次のような方法があります。
+ で繋ぐ方式
Sample.cs(C#)
string template = "My name is "+ name + " and I am "+ age + " years old.";
これは、"固定の文字列"+変数+"固定の文字列". のようにstring型の文章を繋ぐ形式で、変数が多くなると読みにくくなります。
実際に、Unity上でデバッグログとして表示する際には、以下のC#スクリプトを作ってヒエラルキーの空いたところにドラッグ&ドロップするか、空のオブジェクトを作ってそのインスペクターにドラッグ&ドロップしてからゲームを再生してください。
Sample.cs(C#)
using UnityEngine;
public class Sample : MonoBehaviour
{
string name = "Alice";
int age = 18;
void Start()
{
string template = "My name is "+ name + " and I am "+ age + " years old.";
Debug.Log(template);
}
}
public class Sample : MonoBehaviour
{
string name = "Alice";
int age = 18;
void Start()
{
string template = "My name is "+ name + " and I am "+ age + " years old.";
Debug.Log(template);
}
}

代入後に表示される文章例は「My name is Alice and I am 18 years old.」となります。
なお、これはstring型全般の特徴ですが、変数名として代入する時は、ダブルクォーテーションが不要です。
$"{ }" 方式
Sample.cs(C#)
string template= $"My name is {name} and I am {age} years old.";
この方法は、変数が多くなっても見やすいのが特徴です。先頭に$をつけ、変数を{ }で囲むことにより、変数を文字列の中に直接代入できます。
+方式の時は、 " and I am "、" years old." のように" "で括った文字列の前後に変数が入った完成形を考慮して半角スペースを入れなくてはなりません。
一方、 $"{ }" 方式では、見かけ通りスペースを取れるため簡単です。
もし変数名の周りに{}をつけなかった場合、そのまま「name」という文字列として表示され、変数として働きません。
コンソールのデバッグログでキャラクターの名前を表示したい場合などは、
Sample.cs(C#)
Debug.Log($"name: {name}");
と記述すれば、「name:Alice」というように、 {}で囲んだ方のnameだけ、変数の中身が表示されるので見出しラベルとの使い分けができます。bool型でも同様に
Sample.cs(C#)
bool isPlayer=ture;//プレイヤーかどうか
Debug.Log($"isPlayer: {isPlayer}");
と記述することにより、「isPlayer:true」と、{}で囲んだ方だけ変数の中身が表示されます。Debug.Log($"isPlayer: {isPlayer}");
Replace方式
上記の方法でも困るのがゲーム内での翻訳時です。
ゲーム内には、player_nameやnpc_name、enemy_nameなど複数の名前用変数が混在しがちです。
翻訳テンプレート内に{player_name}と書いた場合、呼び出し側のスクリプト内に string player_name;という変数があれば、その中身(例:"Alice","Takashi"など)が代入されます。
しかし、 npc_nameを入れたい時でもplayer_nameしか呼び出せません。
共通のテンプレートを使いまわして、異なる変数を代入する時に使えるのがRepcalce(置き換え)です。
Sample.cs(C#)
using UnityEngine;
public class Sample : MonoBehaviour
{
string player_name="Alice";
string npc_name="Tom";
int player_age=18;
int npc_age=30;
bool isPlayer=false;//プレイヤーならtrue,それ以外ならfalse
string template = "";
string language = "en";//言語選択は他でしているものとします
private void Start()
{
switch (language)
{
case "en"://英語の時
template = "My name is {name} and I am {age} years old.";
//$を付けず、変数ではなくStringの一部として扱います
break;
case "ja"://日本語の時
template = "私の名前は、{name} です。年齢は {age} 歳です。";
//同じく$を付けず、単なるStringとして扱います
break;
default:
template = "My name is {name} and I am {age} years old.";
break;
}
if (isPlayer) //if (isPlayer==true)と同じ意味:プレイヤーの時は
{
string result = template.Replace("{name}", player_name).Replace("{age}", player_age.ToString());
Debug.Log(result);
}
else //上記以外の全ての場合(つまりプレイヤーではない時)
{
string result = template.Replace("{name}", npc_name).Replace("{age}", npc_age.ToString());
Debug.Log(result);
}
//player_age.ToString() では、int型であるplayer_age = 18 を string型の"18"に変換しています。
}
}
Replaceの中で、{name} をさらにダブルクォーテーションで囲み "{name}" としているのは、テンプレート内の {name} の部分を一つの文字列とみなし、変数 player_name の中身 Alice と置き換えるためです。public class Sample : MonoBehaviour
{
string player_name="Alice";
string npc_name="Tom";
int player_age=18;
int npc_age=30;
bool isPlayer=false;//プレイヤーならtrue,それ以外ならfalse
string template = "";
string language = "en";//言語選択は他でしているものとします
private void Start()
{
switch (language)
{
case "en"://英語の時
template = "My name is {name} and I am {age} years old.";
//$を付けず、変数ではなくStringの一部として扱います
break;
case "ja"://日本語の時
template = "私の名前は、{name} です。年齢は {age} 歳です。";
//同じく$を付けず、単なるStringとして扱います
break;
default:
template = "My name is {name} and I am {age} years old.";
break;
}
if (isPlayer) //if (isPlayer==true)と同じ意味:プレイヤーの時は
{
string result = template.Replace("{name}", player_name).Replace("{age}", player_age.ToString());
Debug.Log(result);
}
else //上記以外の全ての場合(つまりプレイヤーではない時)
{
string result = template.Replace("{name}", npc_name).Replace("{age}", npc_age.ToString());
Debug.Log(result);
}
//player_age.ToString() では、int型であるplayer_age = 18 を string型の"18"に変換しています。
}
}
bool型のisPlayerがtrue(プレイヤーである)時は、{name}にplayer_name、{age}にplayer_ageを代入し、それ以外の場合は、{name}にnpc_name、{age}にnpc_ageを代入しています。
このように、代入する変数が異なっても同じテンプレートで対応できます。

isPlayerがfalseの時の表示。プレイヤーのAliceではなくNPCのTom情報になっている。
Replaceと$"{}"の併用
文字列の一部に特定の色を付けるなど装飾したい時も文章テンプレート内にコードを書くのは煩雑ですし、後で文字色を変更したい時にテンプレート内のカラーコードを全て書き換えることになります。
Unityの文字は、TextMeshProを使うと、<color=#FF0000>赤文字</color>のように、
Unityプロジェクトのヒエラルキー(デフォルトでは画面左端)の領域で右クリックし、UI>Text TextMeshPro を選択するとCanvasとその子としてのText用オブジェクトが作成されます。
ヒエラルキー欄
YourProject
|_Canvas
|_Text(TMP)
Sample.cs(C#)
using UnityEngine;
using TMPro; //TextMeshProを使うための宣言
public class Sample : MonoBehaviour
{
public TextMeshProUGUI text_Dialogue;
//↑TextMeshPro要素を持つオブジェクトをインスペクターにアタッチ(ドラッグ&ドロップ)
string player_name="Alice";
int player_age =18;
string template = "";
string language = "en"; //現在の言語
void Start()
{
string coloredName = ColorWrap(player_name,"#FF0000"); //赤
string coloredAge = ColorWrap(player_age.ToString(),"#00FF00");//緑
string ColorWrap(string text, string hex)
=> $"<color={hex}>{text}</color>";
//[悪い例] color = {hex} のように=の前後にスペースが空いているとTextMeshProのフィールドでタグと見なされないので隙間を作らない
switch (language)
{
case "en": //英語の時
template = "My name is {name} and I am {age} years old.";
//$を付けず、変数ではなくStringの一部として扱います
break;
case "ja": //日本語の時
template = "私の名前は、{name} です。年齢は {age} 歳です。";
//同じく$を付けず、単なるStringとして扱います
break;
default:
template = "My name is {name} and I am {age} years old.";
break;
}
string result = template.Replace("{name}",coloredName).Replace("{age}", coloredAge);
text_Dialogue.text=result;
//TextMeshPro要素を持つオブジェクトのテキストに、作った結果を入れます
}
}
上記コードをUnityのヒエラルキーに置き、インスペクター(通常画面右端パネル)内のText_Dialogue欄に先ほど作成したTextMeshPro要素を持つゲームオブジェクトをドラッグ&ドロップしてアタッチすることにより、結果(result)の文字列がゲーム内にテキスト表示されます。using TMPro; //TextMeshProを使うための宣言
public class Sample : MonoBehaviour
{
public TextMeshProUGUI text_Dialogue;
//↑TextMeshPro要素を持つオブジェクトをインスペクターにアタッチ(ドラッグ&ドロップ)
string player_name="Alice";
int player_age =18;
string template = "";
string language = "en"; //現在の言語
void Start()
{
string coloredName = ColorWrap(player_name,"#FF0000"); //赤
string coloredAge = ColorWrap(player_age.ToString(),"#00FF00");//緑
string ColorWrap(string text, string hex)
=> $"<color={hex}>{text}</color>";
//[悪い例] color = {hex} のように=の前後にスペースが空いているとTextMeshProのフィールドでタグと見なされないので隙間を作らない
switch (language)
{
case "en": //英語の時
template = "My name is {name} and I am {age} years old.";
//$を付けず、変数ではなくStringの一部として扱います
break;
case "ja": //日本語の時
template = "私の名前は、{name} です。年齢は {age} 歳です。";
//同じく$を付けず、単なるStringとして扱います
break;
default:
template = "My name is {name} and I am {age} years old.";
break;
}
string result = template.Replace("{name}",coloredName).Replace("{age}", coloredAge);
text_Dialogue.text=result;
//TextMeshPro要素を持つオブジェクトのテキストに、作った結果を入れます
}
}

部分解説
string ColorWrap(string text, string hex)
=> $"<color={hex}>{text}</color>";
ColorWrap に、text(文字列)と hex(16進数のカラーコード)を渡すと、TextMeshPro用のカラータグでstring型を囲みます。=> $"<color={hex}>{text}</color>";
このマークアップ言語方式は、Webサイトを作る時のHTMLとよく似ています。
string coloredName = ColorWrap(player_name,"#FF0000"); //赤
"#FF0000" とダブルクォーテーションで囲っているのは、単なる文字列としてタグの内部へ代入するためです。player_name つまり現在だと Alice の前後にカラータグを入れた次の文字列を作っています。
<color=#FF0000>Alice</color>
これをTextMeshProのテキストウィンドウに入れると、Aliceと色付きで表示されます。

Unity内でゲームを実行時、TextMeshProのTextウィンドウにカラータグ付き文字列が生成されている。
結果(result)部分を抜粋すると次の通りです。
string result = template.Replace("{name}",coloredName)
テンプレート内の文字列 {name} を、coloerName つまり、赤い色 かつ 変数 player_name の中身に置き換える という命令となります。同様に、
string result = template. /*中略*/.Replace("{age}", coloredAge);
では {age}部分を、coloredName つまり、カラーコード #00FF00(緑)かつ 変数 player_age の中身 に置き換えています。繋げると、以下の表示となります。
英語 My name is Alice and I am 18 years old.
日本語 私の名前は、Alice です。年齢は 18 歳です。
※緑文字は白が背景だと視認性が悪いため黒背景にしていますがC#のコードには背景色変更コードが含まれません。
以上のように、Replace方式の中に$"{}"方式を含み2重代入することで、変数内の変化と文字色の変化を同時に編集できます。
これは、ゲームログやシステムメッセージに利用できで、npcやplayerの名前、獲得したアイテム名・個数などを色分けして見やすくできます。
当ブログに掲載されたコードはコピーペースト自由です。権利表記も要りません。無料の趣味でも有料の仕事用コードでも、お好きなようにお使いください。
※上記のままでは同じテキスト内容と文字色しか表示されませんので、変数名や型、値を改造しておつかい下さい。
カテゴリ ゲーム開発
Unity6.2でマウスの左クリックと右クリックを判定する方法
Unity6.2(Ver.6000.2.7f2)でImageをマウスでクリックした際、それが左クリックだったのか、右クリックだったのか判断する方法を紹介します。
Unity6では、case -1:などボタン割当による判別ができません。新しいInput Systemでは、どのボタンをクリックしても全て-2になるという報告例があります。
そのため、新しいInput Systemに対応した判別法を述べます。
前提
YourProjectScene
|_Canvas
| |_Image
|_EventSystem
※EventSystemは、HierarchyのScene直下にあるとは限りません。オブジェクトやPlayerInputの中に生成されている場合もあります。その場合でも役割を果たすため、新規に追加しないでください。
スクリプトコード
クリックの左右を判定するために以下のスクリプトを作成します。
<新規スクリプトの作成>
Assets内にScripts等のフォルダがあればその中で右クリック>Create>MonoBehabior Scriptを左クリックし、新しくできたファイルにお好きな名前(例)「ClickDetection」を入力します。
なお、後からファイル名を変更した場合は、ファイル内の「public class 〇〇〇〇〇」部分も同じ名前に変更してください。両者が異なるとエラーとなります。
<コードの中身>
上記のスクリプトを、先ほど作成したImage要素を持つオブジェクトへドラッグ&ドロップしてください。
シーンビュー上部の▷をクリックしてゲームを実行(Play)します。
Image要素をクリックすると、UnityのConsoleに「Left Click」や「Right Click」と表示されるはずです。

クリックボタン判定中のコンソール
コードは自由にコピーペースト、改造してお使いください。
【クリックの左右を判定すると何ができるのか?】
例えば、ある一つの敵対オブジェクトに対して左クリックで攻撃、右クリックで防御するなど、複数の機能を割り当てることができます。
当社で開発中のシミュレーションゲームでは、アイテム欄整理時にアイコンを左クリックした時は1個移動、右クリックした時は10個移動するようにしています。
カテゴリ ゲーム開発
Unity6では、case -1:などボタン割当による判別ができません。新しいInput Systemでは、どのボタンをクリックしても全て-2になるという報告例があります。
そのため、新しいInput Systemに対応した判別法を述べます。
前提
- シーン内のどこかに「EventSystem」がある。
存在しない場合は、Hierarchy>右クリック>UI>EventSystemで作成してください。 - UI用Canvas>Image要素を持ったオブジェクトがある。
存在しない場合は、Hierarchy>右クリック>UI>CanvasでUICanvasを作成し、その子要素としてImageを作成してください。
YourProjectScene
|_Canvas
| |_Image
|_EventSystem
※EventSystemは、HierarchyのScene直下にあるとは限りません。オブジェクトやPlayerInputの中に生成されている場合もあります。その場合でも役割を果たすため、新規に追加しないでください。
スクリプトコード
クリックの左右を判定するために以下のスクリプトを作成します。
<新規スクリプトの作成>
Assets内にScripts等のフォルダがあればその中で右クリック>Create>MonoBehabior Scriptを左クリックし、新しくできたファイルにお好きな名前(例)「ClickDetection」を入力します。
なお、後からファイル名を変更した場合は、ファイル内の「public class 〇〇〇〇〇」部分も同じ名前に変更してください。両者が異なるとエラーとなります。
<コードの中身>
ClickDetection.cs
using UnityEngine;
using UnityEngine.EventSystems;//追加
public class ClickDetection :MonoBehaviour, IPointerClickHandler//追加
{
public void OnPointerClick(PointerEventData pointerEventData)
{
switch(pointerEventData.button)
{
case PointerEventData.InputButton.Left:
//左クリックした時の処理
Debug.Log("Left Click");
break;
case PointerEventData.InputButton.Right:
//右クリックした時の処理
Debug.Log("Right Click");
break;
case PointerEventData.InputButton.Middle:
//ホイールクリックした時の処理
Debug.Log("Middle Click");
break;
}
}
}
using UnityEngine.EventSystems;//追加
public class ClickDetection :MonoBehaviour, IPointerClickHandler//追加
{
public void OnPointerClick(PointerEventData pointerEventData)
{
switch(pointerEventData.button)
{
case PointerEventData.InputButton.Left:
//左クリックした時の処理
Debug.Log("Left Click");
break;
case PointerEventData.InputButton.Right:
//右クリックした時の処理
Debug.Log("Right Click");
break;
case PointerEventData.InputButton.Middle:
//ホイールクリックした時の処理
Debug.Log("Middle Click");
break;
}
}
}
上記のスクリプトを、先ほど作成したImage要素を持つオブジェクトへドラッグ&ドロップしてください。
シーンビュー上部の▷をクリックしてゲームを実行(Play)します。
Image要素をクリックすると、UnityのConsoleに「Left Click」や「Right Click」と表示されるはずです。

クリックボタン判定中のコンソール
コードは自由にコピーペースト、改造してお使いください。
【クリックの左右を判定すると何ができるのか?】
例えば、ある一つの敵対オブジェクトに対して左クリックで攻撃、右クリックで防御するなど、複数の機能を割り当てることができます。
当社で開発中のシミュレーションゲームでは、アイテム欄整理時にアイコンを左クリックした時は1個移動、右クリックした時は10個移動するようにしています。
カテゴリ ゲーム開発
銀行・金融機関にSteam(Valve社)との取引情報を提出する方法
昨今、資金洗浄(マネロン)防止のため銀行・金融機関(以下、「銀行等」とします)から取引情報の確認を受けることが増えました。
当社では、Steamでゲームをダウンロード販売し、売上からレベニューシェアを受け取っています。
Steamを運営するValve社からの売上はUSドル、つまり外貨で送金されてきます。
そのため、銀行等からは特に「外貨取引に関する取引情報」を求められることが多いでしょう。
以下、機密抵触を避けるため、詳細と画像は省いて説明します。
取引について次の情報・添付資料を要する可能性が高いです。
取引相手の名称は、Steamではなくその運営会社の「Valve Corporation」となります。
業種は、長文を避け、取引に関わりのある事業のみ一文で表現した方が審査に向いています。
取引理由がカテゴリー選択式の場合、「無形商材」>「著作権/ライセンス」に入るそうです。
取引の根拠になる契約書は「STEAM配信契約」です。
契約した覚えがない、どこにやったか分からないという方もおられるでしょうが、この契約書には、SteamWorksでアカウントを作成した際に署名しており、 SteamWorks管理画面>ユーザーと権限>署名済みの契約>「ソフトウェア配信」>右端の「Click to view」から確認できます。
取引相手からの送金額≒着金額が確認できる書類は、SteamWorks管理画面>「財務」>「Reports」>(最新月)>「Payment History」(支払履歴)のスクリーンショットです。
「Net Payment」はその月ごとに受け取れたはずのレベニューシェアです。しかし、支払最低しきい値(Min Payment Threshold)を超えなかった場合は翌月に繰り越されます。
今回分の送金額=繰越合計金額はどこにも記載されていません。
よって、当社の場合はスクリーンショットに画像編集ソフトで次のことを書き入れて提出しました。
これで審査を通りました。他の銀行等ではまた事情が大きく異なるでしょうがご参考までに。
なお、通常の企業間取引ですと、請求書・領収書・支払明細書のいずれかを提出すれば明確な送金額の根拠となります。
【関連記事】ボクステブログ|Steamから売上を受け取る方法
カテゴリ Steam関連
当社では、Steamでゲームをダウンロード販売し、売上からレベニューシェアを受け取っています。
Steamを運営するValve社からの売上はUSドル、つまり外貨で送金されてきます。
そのため、銀行等からは特に「外貨取引に関する取引情報」を求められることが多いでしょう。
以下、機密抵触を避けるため、詳細と画像は省いて説明します。
取引について次の情報・添付資料を要する可能性が高いです。
- 取引相手の名称
- 取引相手の業種
- 取引理由
- 取引の根拠になる契約書
- 取引相手からの送金額≒着金額が確認ができる書類
取引相手の名称は、Steamではなくその運営会社の「Valve Corporation」となります。
業種は、長文を避け、取引に関わりのある事業のみ一文で表現した方が審査に向いています。
取引理由がカテゴリー選択式の場合、「無形商材」>「著作権/ライセンス」に入るそうです。
取引の根拠になる契約書は「STEAM配信契約」です。
契約した覚えがない、どこにやったか分からないという方もおられるでしょうが、この契約書には、SteamWorksでアカウントを作成した際に署名しており、 SteamWorks管理画面>ユーザーと権限>署名済みの契約>「ソフトウェア配信」>右端の「Click to view」から確認できます。
取引相手からの送金額≒着金額が確認できる書類は、SteamWorks管理画面>「財務」>「Reports」>(最新月)>「Payment History」(支払履歴)のスクリーンショットです。
「Net Payment」はその月ごとに受け取れたはずのレベニューシェアです。しかし、支払最低しきい値(Min Payment Threshold)を超えなかった場合は翌月に繰り越されます。
今回分の送金額=繰越合計金額はどこにも記載されていません。
よって、当社の場合はスクリーンショットに画像編集ソフトで次のことを書き入れて提出しました。
- 今回の支払いに掛かるすべての「Net Payment」額を枠で囲って強調
- 枠内の合計金額を明記
- 合計額と着金額の差額は、中継銀行の手数料であること推測される点
これで審査を通りました。他の銀行等ではまた事情が大きく異なるでしょうがご参考までに。
なお、通常の企業間取引ですと、請求書・領収書・支払明細書のいずれかを提出すれば明確な送金額の根拠となります。
【関連記事】ボクステブログ|Steamから売上を受け取る方法
カテゴリ Steam関連
