tag:blogger.com,1999:blog-15665403271249701642024-03-12T05:38:43.706+09:00Unity開発C#サンプルとエラー原因対処ANDROIDのサンプルソースやエラー情報、Unityのc#ソースを載せています。
パソコンで観覧の方は右の検索ボックスを使用して記事の検索が行えます。yukihttp://www.blogger.com/profile/10571346911302340050noreply@blogger.comBlogger450125tag:blogger.com,1999:blog-1566540327124970164.post-41910780095183081112024-03-12T05:38:00.002+09:002024-03-12T05:38:08.872+09:00初心者におすすめの画像生成AIソフト<p> 初心者におすすめの画像生成AIソフトはwebui_forgeがおすすめです。</p><h3 style="text-align: left;">使い方</h3><p></p><ol style="text-align: left;"><li>updatバッチを起動</li><li>runバッチを起動</li></ol><p></p><p>以上でGUIでAI画像生成を使うことができます。</p><p>おすすめプラグイン</p><p></p><ol style="text-align: left;"><li>日本語化</li><li>Layer Diffusion</li><li>Txt/Img To 3D Model</li></ol><p></p><p>3Dモデルに関しては今後に期待と言った感じです。</p><p>レイヤーのほうは背景透過素材の生成に有効です。</p><p>webui_forgeは簡単インストールで多機能です。</p>yukihttp://www.blogger.com/profile/10571346911302340050noreply@blogger.com0tag:blogger.com,1999:blog-1566540327124970164.post-49176051429515701052024-02-12T09:20:00.001+09:002024-02-12T09:20:16.679+09:00データ セーフティの保存が押せない<p> ><span style="background-color: white; color: #1f1f1f; font-family: "Google Sans", Roboto, RobotoDraft, Helvetica, Arial, sans-serif; font-size: 22px; font-variant-ligatures: no-contextual;">ご対応のお願い: Google Play のポリシーにアプリが準拠していません</span><span style="background-color: white; color: #1f1f1f; font-family: "Google Sans", Roboto, RobotoDraft, Helvetica, Arial, sans-serif; font-size: 22px; font-variant-ligatures: no-contextual;"> </span></p><p><span style="background-color: white; font-size: 22px; font-variant-ligatures: no-contextual;"><span style="color: #1f1f1f; font-family: Google Sans, Roboto, RobotoDraft, Helvetica, Arial, sans-serif;">データ セーフティの保存が押せない問題</span></span></p><h3 style="text-align: left;"><span style="background-color: white; font-size: 22px; font-variant-ligatures: no-contextual;"><span style="color: #1f1f1f; font-family: Google Sans, Roboto, RobotoDraft, Helvetica, Arial, sans-serif;">解決策</span></span></h3><p><span style="background-color: white; font-size: 22px; font-variant-ligatures: no-contextual;"><span style="color: #1f1f1f; font-family: Google Sans, Roboto, RobotoDraft, Helvetica, Arial, sans-serif;">内容を変更して戻す</span></span></p><h3 style="text-align: left;"><span style="background-color: white; font-size: 22px; font-variant-ligatures: no-contextual;"><span style="color: #1f1f1f; font-family: Google Sans, Roboto, RobotoDraft, Helvetica, Arial, sans-serif;">所感</span></span></h3><p><span style="color: #1f1f1f; font-family: Google Sans, Roboto, RobotoDraft, Helvetica, Arial, sans-serif;"><span style="background-color: white; font-size: 22px; font-variant-ligatures: no-contextual;">内容を変更しないと保存ができない仕様です。</span></span></p><p><span style="color: #1f1f1f; font-family: Google Sans, Roboto, RobotoDraft, Helvetica, Arial, sans-serif;"><span style="background-color: white; font-size: 22px; font-variant-ligatures: no-contextual;">一旦ポリシーを変更して元に戻すと保存ボタンが効くようになります。</span></span></p><p><span style="color: #1f1f1f; font-family: Google Sans, Roboto, RobotoDraft, Helvetica, Arial, sans-serif;"><span style="background-color: white; font-size: 22px; font-variant-ligatures: no-contextual;">送信して審査されるまでポリシを変更しても問題ありません。</span></span></p><p><span style="color: #1f1f1f; font-family: Google Sans, Roboto, RobotoDraft, Helvetica, Arial, sans-serif;"><span style="background-color: white; font-size: 22px; font-variant-ligatures: no-contextual;"><br /></span></span></p>yukihttp://www.blogger.com/profile/10571346911302340050noreply@blogger.com0tag:blogger.com,1999:blog-1566540327124970164.post-35435598619260203502024-01-22T04:58:00.000+09:002024-01-22T04:58:10.475+09:00GooglePlay開発者サービスが何度も停止する<p>モンストパズドラ等のゲーム中にGooglePlay開発者サービスが何度も停止する問題の解決方法。</p><p></p><ol style="text-align: left;"><li>物理電源ボタン長押しで電源メニューを開く</li><li>電源メニューの電源を切るを長押してセーフモード起動</li><li>設定のアプリを開きGooglePlay開発者サービスのアップデートを削除する</li><li>再起動してGooglePlay開発者サービスをアップデートする</li></ol><p></p><p>端末によってはセーフモードでもGooglePlay開発者サービスを弄れない場合があります。</p><p><br /></p>yukihttp://www.blogger.com/profile/10571346911302340050noreply@blogger.com0tag:blogger.com,1999:blog-1566540327124970164.post-10172459697443846142023-12-16T02:48:00.003+09:002023-12-16T02:48:31.957+09:00dropbox アップロードに失敗しました 永続的なエラー<p> スマホでdropboxのテキストを編集していたら以下のエラーが発生しました。</p><p>「アップロードに失敗しました」 「永続的なエラー」</p><h3 style="text-align: left;">原因</h3><p>Macで作成したテキストファイルを編集した</p><h3 style="text-align: left;">解決方法</h3><p>スマホで新しくテキストファイルを作成する</p><h3 style="text-align: left;">所感</h3><p>Macは色々独自規格が使われているので色々注意しないとダメです。</p><p>ファイル管理も文字コードBOMなどなど</p><p>リンゴは好きだけどMacとiOSが消えてくれれば開発者の負担が半減するのに</p>yukihttp://www.blogger.com/profile/10571346911302340050noreply@blogger.com0tag:blogger.com,1999:blog-1566540327124970164.post-69772807161830653112023-12-15T10:59:00.004+09:002023-12-15T10:59:38.584+09:00RTX4060tiのPCIE Gen3ボトルネック<p>AI学習用のPCを調査しています。</p><h3 style="text-align: left;">4060番台のレーン不足問題</h3><p>4060及び4060tiはx16スロットですが、</p><p>x8しか使うことができません。</p><p>少し古いPCだとPCIEがGen3です。</p><h3 style="text-align: left;">レーンボトルネック割合</h3><p></p><ul style="text-align: left;"><li>4060 1~16%</li><li>4060ti 1~20%</li></ul><p></p><h3 style="text-align: left;">メモリ帯域問題</h3><p>メモリ帯域が280GBしかありません。</p><p>旧世代と比較すると</p><p></p><ul style="text-align: left;"><li>3060 360GB</li><li>4060ti 280GB</li><li>4070 510GB</li></ul><p></p><p>4000番台はキャッシュ効果で論理的には1.5倍になります。</p><p>検討結果</p><p>古いPCなら4060tiよりも3060のほうがx16を使えてボトルネックが少ない。</p><p>AIはCPUが古くても問題ありませんが、PCIEだけは注意を</p>yukihttp://www.blogger.com/profile/10571346911302340050noreply@blogger.com0tag:blogger.com,1999:blog-1566540327124970164.post-75116549078765430132023-12-08T14:28:00.002+09:002023-12-08T14:28:27.930+09:00Unity trimが効かない問題<p> Unityでtrimが効かない問題があります。</p><p>スクリプトテキストのインテントタブ文字を消せませんでした。</p><h3 style="text-align: left;">解決方法</h3><p><span style="color: #274e13;">string tmp = text.Replace("\t", "");</span></p><p>リプレイスが安定です。</p><p>多分7年前にも同じ問題にあっています。</p><p>自分のコードにはトリミングが使われずにリプレイスだけが使用されていました。</p><p>トリミングが機能しないケースは色々あるようです</p>yukihttp://www.blogger.com/profile/10571346911302340050noreply@blogger.com0tag:blogger.com,1999:blog-1566540327124970164.post-71264757060721923542023-12-05T11:35:00.008+09:002023-12-05T11:35:47.958+09:00Unity Unexpected timestamp values detected. This can occur in H.264 videos not encoded with the baseline profile. Timestamps will be skewed to correct the playback for<p> Unityで動画再生時に以下の警告が発生</p><p><span style="color: #274e13;"> Unexpected timestamp values detected. This can occur in H.264 videos not encoded with the baseline profile. Timestamps will be skewed to correct the playback for</span></p><h2 style="text-align: left;">原因</h2><p>エンコードが完全にサポートされていない</p><h3 style="text-align: left;">解決方法</h3><p>対応するエンコードを使うか</p><p><b>警告なので無視してかまわない</b></p>yukihttp://www.blogger.com/profile/10571346911302340050noreply@blogger.com0tag:blogger.com,1999:blog-1566540327124970164.post-18110236873220434632023-12-03T22:46:00.003+09:002023-12-03T22:46:29.090+09:00youtubeの広告を無音倍速自動スキップするAd Speedup<p>ユーチューブ広告を無音倍速自動スキップしてくれるクロームアドオン「Ad Speedup - Skip Video Ads Faster」が便利です。</p><h3 style="text-align: left;">Ad Speedupの効果</h3><p></p><ul style="text-align: left;"><li>広告の16倍速化</li><li>広告の無音化</li><li>広告の自動スキップ</li></ul><p></p><p>クロームウェブストアでインストール可能です。</p><h3 style="text-align: left;">所感</h3><p>リジェクトされるかもしれませんので早めに</p><p>広告でアダルトぐっつが表示されるので入れちゃいました</p><p>棒状の物とか息子増大とかやめてほしい</p>yukihttp://www.blogger.com/profile/10571346911302340050noreply@blogger.com0tag:blogger.com,1999:blog-1566540327124970164.post-53463623045257913122023-11-26T18:30:00.004+09:002023-11-29T12:44:57.593+09:00Unityでコライダーを使わずにマウスドラッグをする<p>Unityでコライダーを使わずにマウスドラッグをするサンプル</p><h2 style="text-align: left;">クリック時の座標を取得</h2><p>void Update()</p><p> if (Input.GetMouseButtonDown(1))</p><p> {</p><p> cxx = Input.mousePosition.x;</p><p> cyy=Input.mousePosition.y;}</p><p>HaikeiScal()</p><h3 style="text-align: left;">以下は拡大とドラッグ</h3><p>float fsize = 1f,xsize=1f,ysize=1f,cxx,cyy;</p><p> int counterm = 0;</p><p> public void HaikeiScal(){</p><p> float scroll = Input.mouseScrollDelta.y * Time.deltaTime * 20f;</p><p> fsize += scroll;//こっちは拡大縮小処理</p><p> Vector3 newsce =</p><p> new Vector3(fsize, fsize, 1f);</p><p> od.haikei.transform.localScale = newsce;</p><p> if (counterm == 30)//フレームレート制御</p><p> {//ドラッグで移動</p><p> float xsize = (cxx - Input.mousePosition.x) * 1f;</p><p> float ysize = (cyy - Input.mousePosition.y) * 1f;//倍率</p><p> Vector2 pos = new Vector2(xsize, ysize);</p><p> od.haikei.GetComponent<RectTransform>().anchoredPosition = pos;</p><p> counterm = 0;</p><p> }</p><p> counterm++;</p><p> }</p><h3 style="text-align: left;">所感</h3><div>ちょっと急ぎなので適当ですがクリック時の座標を起点にマウスの位置で移動します。</div>yukihttp://www.blogger.com/profile/10571346911302340050noreply@blogger.com0tag:blogger.com,1999:blog-1566540327124970164.post-14845334399698783032023-11-24T15:28:00.003+09:002023-11-26T21:44:04.229+09:00c#コルーチンの変数値が変化しない<p>C#で変数の値が変化しない問題について。</p><p>以下は画像の透過率を徐々に下げるコルーチンです。</p><p> private IEnumerator LoopKsane()</p><p> {</p><p><span style="white-space: pre;"> </span></p><p><span style="white-space: normal;"><span style="white-space: pre;"> </span>while (intKasane<30)//30回くりかえす</span></p><p><span style="white-space: normal;"><span style="white-space: pre;"> </span>{</span></p><p><span style="white-space: normal;"><span style="white-space: pre;"> </span>KasaneArufa();</span></p><p><span style="white-space: normal;"><span style="white-space: pre;"> </span>yield return new WaitForSeconds(1f);</span></p><p><span style="white-space: normal;"><span style="white-space: pre;"> </span>}</span></p><p><span style="white-space: normal;"><span style="white-space: pre;"> </span>}</span></p><p>fkasane=0.333f</p><p><span style="white-space: normal;"><span style="white-space: pre;"> </span>private void KasaneArufa()</span></p><p> {</p><p><span style="white-space: normal;"><span style="white-space: pre;"> </span>//fColor = (intKasane +1)* fkasane;//こちらで改善された</span></p><p><span style="white-space: normal;"><span style="white-space: pre;"> </span>fColor =+ fkasane;//繰り返しても0.333のまま変化しない</span></p><p><span style="white-space: normal;"><span style="white-space: pre;"> </span>Color arufa = new Color(1f, 1f, 1f, fColor);</span></p><p><span style="white-space: normal;"><span style="white-space: pre;"> </span>imgKasane.color = arufa;</span></p><p><span style="white-space: normal;"><span style="white-space: pre;"> </span>intKasane++;</span></p><p><span style="white-space: pre;"> </span></p><p><span style="white-space: normal;"><span style="white-space: pre;"> </span>}</span></p><h3 style="text-align: left;"><span style="white-space: normal;">原因</span></h3><p><span style="white-space: normal;">=+で変数を加算したから?</span></p><p><span style="white-space: normal;"><span style="color: red;">new </span>+=って書かないとだめだった・・・</span></p><h3 style="text-align: left;"><span style="white-space: normal;">対処方法</span></h3><p><span style="white-space: normal;">計算式に値が変化する変数を入れた。</span></p><h3 style="text-align: left;"><span style="white-space: normal;">所感</span></h3><p><span style="white-space: normal;">c#プログラミングにブランクがあるため仕様を忘れています。</span></p><p><span style="white-space: normal;">スコープの問題なのか参照渡しの問題なのかごっちゃです。</span></p>yukihttp://www.blogger.com/profile/10571346911302340050noreply@blogger.com0tag:blogger.com,1999:blog-1566540327124970164.post-8021538809789943762023-11-23T14:22:00.000+09:002023-11-23T14:22:07.710+09:00RBGAで透過可能なCalorをFloatで設定する。<p> C#で透過可能なCalorをFloatで設定する。</p><h3 style="text-align: left;">使用例</h3><p>act = new Color (1f, 1f, 1f, 1f);//一番右がアルファ</p><p><span style="white-space: normal;">back = new Color (0.5f, 0.5f, 0.5f, 1f);//(1f, 1f, 1f, 0.5f); 半透明</span></p><p><span style="white-space: normal;">touka = new Color (1f, 1f, 1f, 0f);//透明</span></p><p>img.color=touka;//使用</p><p>RBGAで1fが最大です。16進数よりも扱いやすい</p>yukihttp://www.blogger.com/profile/10571346911302340050noreply@blogger.com0tag:blogger.com,1999:blog-1566540327124970164.post-80431027885784866622023-11-22T11:51:00.002+09:002023-11-22T11:51:32.225+09:00buildエラーLibrary\Bee\artifacts\MacStandalonePlayerBuildProgram\Features\Assembly<p>Mac向けにbuildをしたら以下のエラーが発生しました。 </p><p>Library\Bee\artifacts\MacStandalonePlayerBuildProgram\Features\Assembly</p><h3 style="text-align: left;">原因</h3><p>build設定のカメラの説明とマイクの説明が空白だったため</p><h3 style="text-align: left;">解決方法</h3><p>ビルド設定の説明項目に何か文字を入力する</p>yukihttp://www.blogger.com/profile/10571346911302340050noreply@blogger.com0tag:blogger.com,1999:blog-1566540327124970164.post-47349027801095230172023-11-09T10:49:00.001+09:002023-11-09T10:49:07.728+09:00Unity ボタンが反応しない ホバーも無反応<p> Unityでボタンが急に反応しなくなった&ホバーも無反応になった際の対処</p><h3 style="text-align: left;">対処方法 原因調査</h3><p></p><ol style="text-align: left;"><li>直前に書いたコードがボタン、もしくはパネルに影響している</li><li>ボタンのあるパネルに何かコンポーネントを追加した</li></ol><p></p><p>私の場合はボタンの親パネルにcampusコンポーネントを追加したのが原因でした。</p><p>何らかの実行順序が影響しているようです。</p>yukihttp://www.blogger.com/profile/10571346911302340050noreply@blogger.com0tag:blogger.com,1999:blog-1566540327124970164.post-13019821518613283502023-11-01T08:39:00.001+09:002023-11-01T08:39:05.974+09:00amazonフォトはプライム解約後どうなる?<p>amazonフォトがプライム解約後どうなるか調べてみました。</p><h2 style="text-align: left;">5GB以上の写真がある場合</h2><p>3ヶ月間は閲覧とダウンロード可能</p><p>新規アップロードは不可</p><h3 style="text-align: left;">5GB以下の写真量の場合</h3><p>そのまま使用できる</p><h3 style="text-align: left;">所感</h3><p>フォロプライムは容量無制限で静止画を保存できますが</p><p>そもそも静止画を5GBも消費しません</p><p>動画だと5GB以上の保存は別料金がかかります</p>yukihttp://www.blogger.com/profile/10571346911302340050noreply@blogger.com0tag:blogger.com,1999:blog-1566540327124970164.post-11471954069277178712023-10-19T08:18:00.005+09:002023-10-19T08:18:56.778+09:00Unityで一文字つづ表示する一番シンプルな方法C#<p> UnityのレガシーTextでも使える一文字つづ表示する一番シンプルな方法です。</p><h3 style="text-align: left;">ソース</h3><p>private void SkipMode()</p><p> {</p><p><span style="white-space: normal;"><span style="white-space: pre;"> </span>StartCoroutine(Mojiokuri());</span></p><p><span style="white-space: normal;"><span style="white-space: pre;"> </span>}</span></p><p><span style="white-space: normal;"><span style="white-space: pre;"> </span>private string mess = "こんにちは、今日もよろしく";</span></p><p><span style="white-space: normal;"><span style="white-space: pre;"> </span>private string[] words;</span></p><p><span style="white-space: normal; white-space: pre;"> </span></p><p><span style="white-space: normal;"><span style="white-space: pre;"> </span>//コルーチン</span></p><p><span style="white-space: normal;"><span style="white-space: pre;"> </span>IEnumerator Mojiokuri()</span></p><p><span style="white-space: normal;"><span style="white-space: pre;"> </span>{</span></p><p><span style="white-space: normal; white-space: pre;"> </span></p><p><span style="white-space: normal;"><span style="white-space: pre;"> </span>words = mess.Select(x => x.ToString()).ToArray();</span></p><p><span style="white-space: normal;"><span style="white-space: pre;"> </span>foreach (string word in words)</span></p><p><span style="white-space: normal;"><span style="white-space: pre;"> </span>{</span></p><p><span style="white-space: normal;"><span style="white-space: pre;"> </span>//0.1秒ごとに1文字表示する</span></p><p><span style="white-space: normal;"><span style="white-space: pre;"> </span>od.uimesse.text = od.uimesse.text + word;</span></p><p><span style="white-space: normal;"><span style="white-space: pre;"> </span>yield return new WaitForSeconds(0.1f);</span></p><p><span style="white-space: normal;"><span style="white-space: pre;"> </span>}</span></p><p><span style="white-space: normal;"><span style="white-space: pre;"> </span>}</span></p><h3 style="text-align: left;"><span style="white-space: normal;">所感</span></h3><p><span style="white-space: normal;">テキストメッシュプロを使わないシンプルな方法です。</span></p><p><span style="white-space: normal;">デフォで付けてほしい。</span></p>yukihttp://www.blogger.com/profile/10571346911302340050noreply@blogger.com0tag:blogger.com,1999:blog-1566540327124970164.post-36622834344720832732023-10-18T05:23:00.005+09:002023-10-18T05:23:59.632+09:00Unity Colorをシリアライズする <p>UniyでimageのColorクラスを保存しようとしたら以下のエラーが表示されました。</p><p>>SerializationException: Type 'UnityEngine.Color' in Assembly 'UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' is not marked as serializable.</p><h3 style="text-align: left;">解決方法</h3><p>Colorを文字型に相互変換して保存する</p><p> public static Color ToColor(string str)</p><p> {//文字型をカラーに変換</p><p><span style="white-space: normal;"><span style="white-space: pre;"> </span>Color color;</span></p><p><span style="white-space: normal;"><span style="white-space: pre;"> </span>if (ColorUtility.TryParseHtmlString(str, out color))</span></p><p><span style="white-space: normal;"><span style="white-space: pre;"> </span>{</span></p><p><span style="white-space: normal;"><span style="white-space: pre;"> </span>//変換成功</span></p><p><span style="white-space: normal;"><span style="white-space: pre;"> </span>}</span></p><p><span style="white-space: normal;"><span style="white-space: pre;"> </span>else</span></p><p><span style="white-space: normal;"><span style="white-space: pre;"> </span>{</span></p><p><span style="white-space: normal;"><span style="white-space: pre;"> </span>//変換失敗</span></p><p><span style="white-space: normal;"><span style="white-space: pre;"> </span>color = Color.clear;</span></p><p><span style="white-space: normal;"><span style="white-space: pre;"> </span>}</span></p><p><br /></p><p><span style="white-space: normal;"><span style="white-space: pre;"> </span>return color;</span></p><p><br /></p><p><span style="white-space: normal;"><span style="white-space: pre;"> </span>}</span></p><p><span style="white-space: normal;"><span style="white-space: pre;"> </span>public static string ToStringColor(Color color)</span></p><p> {</p><p><span style="white-space: normal;"><span style="white-space: pre;"> </span>string strcolor = ColorUtility.ToHtmlStringRGB(color);</span></p><p><br /></p><p><span style="white-space: normal;"><span style="white-space: pre;"> </span>return strcolor;</span></p><p><span style="white-space: normal;"><span style="white-space: pre;"> </span>}</span></p>yukihttp://www.blogger.com/profile/10571346911302340050noreply@blogger.com0tag:blogger.com,1999:blog-1566540327124970164.post-32919147773264286892023-10-05T14:07:00.003+09:002023-10-05T14:07:24.674+09:00Unity if StartsWith("")が動作しない<p> StartsWithに空文字は使えません。</p><h3 style="text-align: left;">使用例</h3><p>if (str.<b>StartsWith</b>(""))すべての文字をイフブロックに入れてしまう。</p><p>if (str.<b>Equals</b>(""))空文字だけをイフブロックに入れる。</p><h3 style="text-align: left;">解決方法</h3><p> StartsWithは文字列の先頭を判別してくれる関数です。</p><p>空文字の判断はEqualsを使います。</p>yukihttp://www.blogger.com/profile/10571346911302340050noreply@blogger.com0tag:blogger.com,1999:blog-1566540327124970164.post-53195327498607773622023-09-26T02:45:00.003+09:002023-09-26T02:45:43.880+09:00UTF-8-Macの濁点半濁点ユニコードの注意<p> Macのファイル管理に使われているUTF-8-Macですが。</p><p> UTF-8-Macは濁点自体が一つの文字として扱われています。</p><h3 style="text-align: left;">文字数の例</h3><p></p><ul style="text-align: left;"><li>バイオリン UTF-8-Macでは6文字。通常のユニコードでは5文字</li><li>パパイヤ UTF-8-Macでは6文字。通常のユニコードでは4文字</li></ul><p></p><h3 style="text-align: left;">注意点</h3><p> UTF-8-Macは通常のUTF-8と濁点以外互換性があります。</p><p> UTF-8でMacのファイル名を検索すると濁点半濁点のファイルが除外されてしまいます。</p><p>検索自体は働くのでエラーが発見しにくいです。</p><h3 style="text-align: left;">所感</h3><p>中途半端な互換性があるためバグを見落としやすいです。</p><p>Appleの独自規格は開発者の天敵です。</p>yukihttp://www.blogger.com/profile/10571346911302340050noreply@blogger.com0tag:blogger.com,1999:blog-1566540327124970164.post-53903307956520196552023-09-11T17:04:00.002+09:002023-10-25T11:15:12.936+09:00配列にAddListenerを使う際の注意<h3 style="text-align: left;">間違った使い方</h3><p> <span style="white-space: normal;"><span style="white-space: pre;"> </span>for (i=1:i<5:i++)</span></p><p> {</p><p> buttons[i].onClick.AddListener(() => buttonClick(i)); </p><p> }</p><p><span style="white-space: normal;"><span style="white-space: pre;"> </span>五つのボタンはクリック時に引数(4)でbuttonClickが実行される</span></p><h3 style="text-align: left;"><span style="white-space: normal;">正しい使い方</span></h3><p><span style="white-space: pre;"> </span></p><p><span style="white-space: normal;"><span style="white-space: pre;"> </span>for (i=1:i<5:i++)</span></p><p> {</p><p> int count = i; //ローカル変数にいれる</p><p> buttons[i].onClick.AddListener(() => buttonClick(count)); //引数にローカル変数使う</p><p> }</p><p><span style="white-space: normal;"><span style="white-space: pre;"> </span>5つのボタンは異なる引数(0〜4)で実行される</span></p>yukihttp://www.blogger.com/profile/10571346911302340050noreply@blogger.com0tag:blogger.com,1999:blog-1566540327124970164.post-27872867382102356242023-09-08T15:55:00.001+09:002023-09-08T15:55:17.023+09:00同名のオブジェクトがシーンに存在する場合のNullReferenceException: <p> 同名のオブジェクトがシーンに存在する場合に</p><p>複数の個所でFindからインスタンスを得ると競合してしまう</p><p><br /></p><p>メニュー画面とセーブ画面に使われている同名のボタン(閉じるボタン)に対してクリックリスナーを設定した場合。後から設定されるクリックリスナーが適応される。</p><p><span style="color: #38761d;">>NullReferenceException: Object reference not set to an instance of an object</span></p><p><span style="color: #38761d;">YSSave.MyOnClick (System.Int32 index) (at Assets/YSSave.cs:34)</span></p><p><span style="color: #38761d;">YSSave.<Start>b__4_1 () (at Assets/YSSave.cs:19)</span></p><p><span style="color: #38761d;">UnityEngine.Events.InvokableCall.Invoke () (at <f1212ad1dec44ce7b7147976b91869c3>:0)</span></p><p><span style="color: #38761d;">UnityEngine.Events.UnityEvent.Invoke () (at <f1212ad1dec44ce7b7147976b91869c3>:0)</span></p><p><span style="color: #38761d;">UnityEngine.UI.Button.Press () (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/UI/Core/Button.cs:70)</span></p><p><span style="color: #38761d;">UnityEngine.UI.Button.OnPointerClick (UnityEngine.EventSystems.PointerEventData eventData) (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/UI/Core/Button.cs:114)</span></p><p><span style="color: #38761d;">UnityEngine.EventSystems.ExecuteEvents.Execute (UnityEngine.EventSystems.IPointerClickHandler handler, UnityEngine.EventSystems.BaseEventData eventData) (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/EventSystem/ExecuteEvents.cs:57)</span></p><p><span style="color: #38761d;">UnityEngine.EventSystems.ExecuteEvents.Execute[T] (UnityEngine.GameObject target, UnityEngine.EventSystems.BaseEventData eventData, UnityEngine.EventSystems.ExecuteEvents+EventFunction`1[T1] functor) (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/EventSystem/ExecuteEvents.cs:272)</span></p><p><span style="color: #38761d;">UnityEngine.EventSystems.EventSystem:Update() (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/EventSystem/EventSystem.cs:501)</span></p>yukihttp://www.blogger.com/profile/10571346911302340050noreply@blogger.com0tag:blogger.com,1999:blog-1566540327124970164.post-19695075236686107232023-07-29T04:50:00.001+09:002023-07-29T04:50:07.684+09:00unity UIを非表示にする<p> unityでUIを非表示にする方法</p><p></p><ol style="text-align: left;"><li>シーンのUIの親をキャンパスにする</li><li>以下のコードを実行する</li></ol><p></p><p><span style="color: #0c343d;"><span style="white-space: pre;"> </span>Canvas cv;</span></p><p><span style="white-space: normal;"><span style="color: #0c343d;"><span style="white-space: pre;"> </span>cv = GameObject.Find("CanvasYSC").GetComponent<Canvas>();</span></span></p><p><span style="white-space: normal;"><span style="color: #0c343d;"><span style="white-space: pre;"> </span>cv.enabled=false;</span></span></p><p>Canvasとenabledを利用することで高速に非表示にできます</p>yukihttp://www.blogger.com/profile/10571346911302340050noreply@blogger.com0tag:blogger.com,1999:blog-1566540327124970164.post-46608875516252316382023-07-03T16:25:00.001+09:002023-07-03T16:25:25.968+09:00Unity TextMeshProをGetComponentできない<p> Unity TextMeshProをGetComponentできない問題。</p><p>新しいUnityはUIからボタンを作成するとTextMeshProがセットで子に入る</p><p>このTextMeshProはTextの進化版です。</p><p>古いUIと混同しているためかゲットコンポーネントで取得できません。</p><h3 style="text-align: left;">解決方法</h3><p>シーンのゲームオブジェクトからTextMeshProを削除しTextを追加する。</p><h3 style="text-align: left;">所感</h3><p>新しい機能をデフォにされると既知のコードが使えなくて不便です。</p>yukihttp://www.blogger.com/profile/10571346911302340050noreply@blogger.com0tag:blogger.com,1999:blog-1566540327124970164.post-48406458505170386052023-07-01T15:44:00.003+09:002023-07-01T15:44:45.171+09:00C#Dictionaryを文字配列型に変換してシリアライズ可能にする<p>unityC#のハッシュテーブルのDictionaryは直接シリアライズできません。</p><p>Dictionaryをゲームで保存したい場合は以下の方法があります。</p><p></p><ol style="text-align: left;"><li>手間大 Dictionaryクラスをシリアライズ可能に書き換える</li><li>手間中 DictionaryをXMLに変換して保存する</li><li>手間小 Dictionaryを文字配列に変換する</li></ol><p></p><h3 style="text-align: left;">3番の文字配列に変換のサンプルです</h3><p><span style="color: #274e13;"> //using System.Collections.Generic;</span></p><p><span style="color: #274e13;"> //Dictionaryを二つの文字型一次配列に変換する</span></p><p><span style="color: #274e13;"> Dictionary<string, string> dic = new Dictionary<string, string></span></p><p><span style="color: #274e13;"> {</span></p><p><span style="color: #274e13;"> { "1", "いち" },</span></p><p><span style="color: #274e13;"> { "2", "に" },</span></p><p><span style="color: #274e13;"> { "3", "さん" }</span></p><p><span style="color: #274e13;"> };</span></p><p><span style="color: #274e13;"> </span></p><p><span style="color: #274e13;"> //変換する配列を作成する</span></p><p><span style="color: #274e13;"> string[] keys = new string[dic.Keys.Count];</span></p><p><span style="white-space: normal;"><span style="color: #274e13;"><span style="white-space: pre;"> </span>string[] vals = new string[dic.Values.Count];</span></span></p><p><span style="white-space: normal;"><span style="color: #274e13;"><span style="white-space: pre;"> </span>//二つの配列に変換する</span></span></p><p><span style="white-space: normal;"><span style="color: #274e13;"><span style="white-space: pre;"> </span>dic.Values.CopyTo(vals, 0);</span></span></p><p><span style="white-space: normal;"><span style="color: #274e13;"><span style="white-space: pre;"> </span>dic.Keys.CopyTo(keys, 0);</span></span></p><p><span style="color: #274e13;"><span style="white-space: pre;"> </span>Dictionary<string, string> newDic = new Dictionary<string, string>();</span></p><p><span style="color: #274e13;"><span style="white-space: pre;"> </span>toDictiotnary(keys, vals, newDic);</span></p><p><span style="white-space: normal;"><span style="color: #274e13;"><span style="white-space: pre;"> </span>Debug.Log(newDic["2"]);</span></span></p><p><span style="white-space: normal;"><span style="color: #274e13;"><span style="white-space: pre;"> </span>public void toDictiotnary(string[] keys, string[] vals, Dictionary<string, string> dic)</span></span></p><p><span style="color: #274e13;"> {</span></p><p><span style="white-space: normal; white-space: pre;"><span style="color: #274e13;"> </span></span></p><p><span style="white-space: normal;"><span style="color: #274e13;"><span style="white-space: pre;"> </span>if (keys.GetLength(0) == vals.GetLength(0))</span></span></p><p><span style="color: #274e13;"> {</span></p><p><span style="color: #274e13;"><span style="white-space: pre;"> </span>for(int i = 0; i < keys.GetLength(0); i++)</span></p><p><span style="color: #274e13;"> {</span></p><p><span style="white-space: normal;"><span style="color: #274e13;"><span style="white-space: pre;"> </span>dic[keys[i]] = vals[i];</span></span></p><p><span style="white-space: normal;"><span style="color: #274e13;"><span style="white-space: pre;"> </span>}</span></span></p><p><span style="color: #274e13;"> }</span></p><p><span style="color: #274e13;"> }</span></p><h3 style="text-align: left;">結果</h3><p>に</p><h3 style="text-align: left;">所感</h3><p>ディグショナリは便利ですがC#の仕様が固いです。</p><p>ハッシュテーブルはディグショナリと互換がありますが推奨されていません。</p><p>public <b><span style="color: #274e13;">Dictionary</span></b><span style="color: #274e13;"><string, string> </span>d1,d2;</p><p>ディグショナリはハッシュテーブルと互換性があるので簡単に置き換えられます。</p>yukihttp://www.blogger.com/profile/10571346911302340050noreply@blogger.com0tag:blogger.com,1999:blog-1566540327124970164.post-64107618003449827422023-06-26T18:36:00.007+09:002023-06-26T18:39:21.204+09:00VideoPlayerをローカルから再生する方法<p> VideoPlayerをローカルから再生する場合とリソースから再生する方法</p><p><span style="color: #0c343d;"><span style="white-space: pre;"> </span>VideoPlayer vp = GetComponent<VideoPlayer>();</span></p><p><span style="color: #0c343d;"><span style="white-space: pre;"> </span>string stCurrentDir = System.IO.Directory.GetCurrentDirectory();</span></p><p><span style="color: #0c343d;"><span style="white-space: pre;"> </span>//ローカルから読み取り 実行ファイルと同じディレクトリ</span></p><p><span style="white-space: normal;"><span style="color: #0c343d;"><span style="white-space: pre;"> </span>vp.url = stCurrentDir+ "vid1.mp4";</span></span></p><p><span style="color: #0c343d;"><span style="white-space: pre;"> </span>//resourceから読み取り プロジェクトのリソースフォルダ/videoから</span></p><p><span style="color: #0c343d;"><span style="white-space: normal;"><span style="white-space: pre;"> </span>vp.clip = Resources.Load<VideoClip>("video/</span>vid1<span style="white-space: normal;">");</span></span></p><p><span style="color: #0c343d;"><span style="white-space: pre;"> </span>vp.Play();</span></p><p></p><ol style="text-align: left;"><li>VideoPlayerとc#ファイルを同じオブジェクトに張り付ける</li><li>VideoPlayerのレンダーをカメラのニアーにする</li><li>VideoPlayerのカメラをメインカメラに設定する</li></ol><p></p><h3 style="text-align: left;">所感</h3><p>音楽を読み込むよりかなり簡単です。</p><p>オーディオソースからはURLで音楽を読み取れないので</p><p><br /></p><p><br /></p>yukihttp://www.blogger.com/profile/10571346911302340050noreply@blogger.com0tag:blogger.com,1999:blog-1566540327124970164.post-65360582037095774852023-06-26T05:45:00.002+09:002023-06-26T05:45:55.507+09:00Unity 複数の音をプログラムから同時に鳴らす<p>複数の音をプログラムから同時に鳴らすサンプル </p><p><span style="color: #274e13;">単一のオーディオソースの場合</span></p><p><span style="color: #274e13;">AudioSource audioSource = GetComponent<AudioSource>();</span></p><div><span style="color: #274e13;">複数のオーディオソース</span></div><p><b><span style="color: #274e13;">AudioSource</span><span style="color: #990000;">[]</span><span style="color: #274e13;"> audioSources = GetComponent</span><span style="color: #990000;">s</span><span style="color: #274e13;"><AudioSource>();</span></b></p><p><span style="white-space: normal;"><span style="color: #274e13;"><span style="white-space: pre;"> </span>bgm = audioSources[0];</span></span></p><p><span style="white-space: normal;"><span style="color: #274e13;"><span style="white-space: pre;"> </span>koukaon = audioSources[1];</span></span></p><p></p><ol style="text-align: left;"><li>複数のオーディオソースをシーンに追加する</li><li>GetComponent<b><span style="color: #783f04;">s</span></b><AudioSource>で配列のオーディオソースを取得</li></ol><p></p><p>GetComponentの末尾にsをつけると複数のオーディオソースをプログラムから取得できます。</p>yukihttp://www.blogger.com/profile/10571346911302340050noreply@blogger.com0