[過去ログ]
【3Dゲームエンジン】Unity質問スレッド30 [無断転載禁止]©2ch.net (1002レス)
【3Dゲームエンジン】Unity質問スレッド30 [無断転載禁止]©2ch.net http://mevius.5ch.net/test/read.cgi/gamedev/1500412168/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
760: 名前は開発中のものです。 [sage] 2017/08/23(水) 00:20:47.73 ID:0fyfcMVA >>758 実際に取得できたbuttonの配列数とnumButtonsの値が不一致なんだと思います。 例えばbuttonが2個しかないのに numButtons = 4 のように設定しているとforループで button[0] //大丈夫 button[1] //大丈夫 button[2] //indexoutofrangeexception button[3] //indexoutofrangeexception と用意されていない配列まで呼び出そうとし 「indexoutofrangeexception(存在しない配列番号を指定しています)エラーなりますよ。 for (int i = 0; i < numButtons; i++) ではなく for (int i = 0; i < button.Length; i++) の方が確実です http://mevius.5ch.net/test/read.cgi/gamedev/1500412168/760
761: 名前は開発中のものです。 [sage] 2017/08/23(水) 00:21:12.20 ID:f4UC00rn 配列と非配列が同居。 http://mevius.5ch.net/test/read.cgi/gamedev/1500412168/761
762: 名前は開発中のものです。 [sage] 2017/08/23(水) 01:23:24.71 ID:AOtX330Z なんでDebug.Logは使えるのにbutton.lengthをLogに出そうと思わなかったのか? http://mevius.5ch.net/test/read.cgi/gamedev/1500412168/762
763: 名前は開発中のものです。 [sage] 2017/08/23(水) 01:36:08.70 ID:3WNWlazc 配列作った時に何個作ったのか記録されてる数見ないと、 作った数とintが一致する訳ないよね 理解出来ないじゃなくて、配列を理解してないんだよ http://mevius.5ch.net/test/read.cgi/gamedev/1500412168/763
764: 名前は開発中のものです。 [sage] 2017/08/23(水) 01:41:45.12 ID:atYfWrEx ちゃんとnumButtonと命名してるのに自動で入れてくれないUnityが悪い http://mevius.5ch.net/test/read.cgi/gamedev/1500412168/764
765: 名前は開発中のものです。 [sage] 2017/08/23(水) 02:20:33.87 ID:iWkNM0se ウディタに移行しようかな http://mevius.5ch.net/test/read.cgi/gamedev/1500412168/765
766: 名前は開発中のものです。 [sage] 2017/08/23(水) 02:51:15.12 ID:61qz+tvb 高級言語が無理なら諦めるのも手 http://mevius.5ch.net/test/read.cgi/gamedev/1500412168/766
767: 名前は開発中のものです。 [sage] 2017/08/23(水) 06:33:45.15 ID:9IfN6Xrm >>758だけど、みんなありがとう。おかげで多少進展しました。 using System.Collections; using System.Collections.Generic; using UnityEngine; public class NewBehaviourScript : MonoBehaviour { public int numButtons; private GameObject[] buttons = new GameObject[25]; // Use this for initialization void Start () { this.buttons = GameObject.FindGameObjectsWithTag ("button"); Debug.Log (buttons.Length); } } これをあるシーンに使ったら 一見何も関係なさそうなpublic int numButtons;を入れるとログは27、入れないと0が出ました。 別のシーンで使ったら合ってもなくても0でした。 numbuttonsはスクロールパネル上にボタンのプレハブを大量に並べるときにつくった変数で、インスペクタ上で27で上のどちらのシーン上にも存在しています。 試しに前者のシーンでnumbuttonsに26を設定したらログの27が26になりました。 配列の大きさを決める表現が間違っていたら元も子もないですが、 それにしてもなぜ関係ない変数が干渉してくるのか理解できません。 http://mevius.5ch.net/test/read.cgi/gamedev/1500412168/767
768: 名前は開発中のものです。 [sage] 2017/08/23(水) 07:49:19.60 ID:TuNmkY+t >>767 デバッガで追っても再現しないし、何言ってんだか意味が分からない 貴方の環境固有の問題としか言い様がない http://mevius.5ch.net/test/read.cgi/gamedev/1500412168/768
769: 名前は開発中のものです。 [sage] 2017/08/23(水) 12:17:15.25 ID:0fyfcMVA >>767 まず1つ1つが何をしているのかよく理解することが大事です buttons.Length これは確保された実際の配列の数が格納されています。 配列が1つも確保されていないのなら"0"を返し 仮に25個確保されたのなら"25"を返します。 buttons = GameObject.FindGameObjectsWithTag ("button"); これは 画面右上のタグ部分が"button"になってるGameObjectを全部buttonsという配列に格納するものです。 buttonというタグを付けられたGameObjectが2つ存在していれば2つ配列が新規に作成され 1つも存在していなければ配列は作成されません。 つまりbuttons.Lengthの値は"0"です。 private GameObject[] buttons = new GameObject[25]; //←無意味です this.buttons = GameObject.FindGameObjectsWithTag ("button"); //ここで実際に存在するbuttonの数だけ自動的に配列が再確保されます 上のコードは下と同じです private GameObject[] buttons; buttons = GameObject.FindGameObjectsWithTag ("button"); 説明が重複しますが タグにbuttonが指定されているGameObjectが存在していないのならば配列は確保されず buttons.Lengthの値は"0"です。 numButtonsの値はプログラムのどこにも使用されておらずこれも無意味で必要ありません(結果に影響していません) http://mevius.5ch.net/test/read.cgi/gamedev/1500412168/769
770: 名前は開発中のものです。 [sage] 2017/08/23(水) 12:17:43.32 ID:ouhFnsS+ そもそもnumButtonsというpublic変数の存在意図がわからん どこで値を入れてるの? エディタ画面で手で直接いれてるの? numButtonsをforループでしか使ってないならnumButtons自体不要だな 手で毎回ボタン数入れてるならその手間もなくなる http://mevius.5ch.net/test/read.cgi/gamedev/1500412168/770
771: 769 [sage] 2017/08/23(水) 12:29:22.72 ID:0fyfcMVA >>767 using UnityEngine; using System.Collections; public class Nichan_767 : MonoBehaviour { private GameObject[] buttons = new GameObject[25]; // Use this for initialization void Start() { Debug.Log("Length=" + buttons.Length); // ?24と表示される buttons = GameObject.FindGameObjectsWithTag("button"); Debug.Log("Length=" + buttons.Length); // ?0と表示される } } ?の時点では private GameObject[] buttons = new GameObject[25]; で確保した物は存在していますが ?の結果から buttons = GameObject.FindGameObjectsWithTag("button"); ここで配列を再構築してるのを理解いただけるかと思います。 仮にTag"button"のGameObjectを3つ配置すると?の結果は3に変化します。 このように1行1行の命令が何をしているのか、そして動きの変化を丁寧に見ている事が大切になりますよ。 参考にしてみてください。 http://mevius.5ch.net/test/read.cgi/gamedev/1500412168/771
772: 769 [sage] 2017/08/23(水) 12:30:32.64 ID:0fyfcMVA 訂正: ?の結果は"24"ではなく"25"です。 http://mevius.5ch.net/test/read.cgi/gamedev/1500412168/772
773: 名前は開発中のものです。 [sage] 2017/08/23(水) 12:45:14.84 ID:ouhFnsS+ numButtonsはボタン大量に並べるときにも使ってるのかな buttonタグのついたボタンの個数とnumButtonsの数が一致してるならいまいち原因がわからん FindGamesObjectWithTagで取得された要素数がbuttonタグのついた要素数と一致してないのか? http://mevius.5ch.net/test/read.cgi/gamedev/1500412168/773
774: 名前は開発中のものです。 [sage] 2017/08/23(水) 12:52:25.31 ID:TuNmkY+t http://i.imgur.com/HH5hbSd.gif デバッガでアタッチすればプロセスの中身全部見れる訳で 第一確保したメモリを他の領域が侵食して勝手に書き換えてたら、 そりゃ唯のバッファオーバーフローじゃん 出来てるやれてる解ってるって、勝手な予想や思い込みを捨てて メモリの中身がどうなってるか逐一確認しなきゃ分かる訳ないよ そこが可笑しい http://mevius.5ch.net/test/read.cgi/gamedev/1500412168/774
775: 名前は開発中のものです。 [sage] 2017/08/23(水) 13:09:36.74 ID:MTXdrtmX C#の絵本でも読んどけ http://mevius.5ch.net/test/read.cgi/gamedev/1500412168/775
776: 名無し@キムチ [] 2017/08/23(水) 18:33:19.91 ID:CUIL1+3U >>742 ※ キムチに餌をやらないでください 当方にとって最大の餌といえば、やはりUnityそのものですね。 あと、BlenderやMakeHumanも非常に大きな餌であり、MakeClothesもちょっぴりの餌です。 またこのスレでの餌といえば、困った時に質問して有効な回答が得られることでしょうね。 その餌をやらないでくれ、ということは当方が有効な回答を得た場合何か困ることがあるのですか? もしかして>>742は当方が知ってるヒトだったりしますか? http://mevius.5ch.net/test/read.cgi/gamedev/1500412168/776
777: 名前は開発中のものです。 [sage] 2017/08/23(水) 23:05:35.51 ID:t1wRCclf アセットを買えばいいと思いますよ 無理にスクリプトを扱う必要はありません http://mevius.5ch.net/test/read.cgi/gamedev/1500412168/777
778: 名前は開発中のものです。 [sage] 2017/08/24(木) 00:00:18.77 ID:zcnJsAO1 おすすめの解説サイトか書籍を教えてください。 Unityは初めてで、プログラミングの経験はある程度あります。 http://mevius.5ch.net/test/read.cgi/gamedev/1500412168/778
779: 名前は開発中のものです。 [sage] 2017/08/24(木) 00:35:42.77 ID:OjzkpEBe オススメはUnreal Engineです Unityなど速攻アンインストールしましょう http://mevius.5ch.net/test/read.cgi/gamedev/1500412168/779
780: ダーク王鍬大使 ◆SoVpkB15jY [sage] 2017/08/24(木) 00:47:54.16 ID:2Q8VoCoW そういえばツクール2000のYADOTポジションのホームページってまだないんでふね(^^ あってもいい気がしまふが(^^ http://mevius.5ch.net/test/read.cgi/gamedev/1500412168/780
781: 名前は開発中のものです。 [sage] 2017/08/24(木) 01:59:13.01 ID:zcnJsAO1 >>779 どうしてですか?unityだめなんですか? http://mevius.5ch.net/test/read.cgi/gamedev/1500412168/781
782: 名前は開発中のものです。 [sage] 2017/08/24(木) 07:41:29.43 ID:ruQ5JhDH >>767です。 多少進展しました。 public class NewBehaviourScript : MonoBehaviour { private GameObject[] buttons = new GameObject[25]; // Use this for initialization void Start () { this.buttons = GameObject.FindGameObjectsWithTag ("button"); Debug.Log (buttons.Length); } } とりあえずスクリプト全体の変数を見直して、そのあと初めて デバッグしました。25これこれはいらないのですが、あえて残してます。 シーン1では、buttonsの要素数が25になった後、buttonタグを有したオブジェクトが入り27になりました。 教えてもらった挙動の通りで、こちらは多分解決しました。 これをシーン2で試したら要素数25の後 、this.buttons = GameObject.FindGameObjectsWithTag ("button"); の処理で0になりました。 そこでFindGameObjectsWithTag でbuttonタグをもったゲームオブジェクトを見つけられていないと考えました。 そこで30個ほどbuttonタグをつけたオブジェクトを作ってみたら、加えたオブジェクトの数と等しい要素数がthis.buttons = GameObject.FindGameObjectsWithTag ("button"); の処理で反映されました。 buttonタグをもったオブジェクトはアクティブで、タグ名もbuttonで、タグマネージャにもbuttonタグはあります。 シーン1では上手くいってるだけに、シーン2にはどこかしら不具合があるはずなんだと思いますが、何を考えるべきだとおもいますか? http://mevius.5ch.net/test/read.cgi/gamedev/1500412168/782
783: 名前は開発中のものです。 [sage] 2017/08/24(木) 12:18:07.69 ID:XR5K+uMT >>782 シーン2にbuttonタグのオブジェクトを配置していないから0になるのだと思いますが。 シーン2にbuttonタグのオブジェクトが配置してあるのに取得できないのですか? それとも シーン1にあるボタンをシーン2のスクリプトから取得したいという事ですか? http://mevius.5ch.net/test/read.cgi/gamedev/1500412168/783
784: 名前は開発中のものです。 [sage] 2017/08/24(木) 13:05:07.67 ID:lkGi/EQe よくわからんけど this.buttons = GameObject.FindGameObjectsWithTag ("button"); この記述は正しいの? エラーの原因な気がするが http://mevius.5ch.net/test/read.cgi/gamedev/1500412168/784
785: 名前は開発中のものです。 [sage] 2017/08/24(木) 13:12:16.57 ID:r02jaxxe あちこちに、デバッグ文を書いて、 どの関数が呼ばれたか・呼ばれていないのか、を確認すれば? 究極を言えば、1行ずつ、デバッグして確かめるべき http://mevius.5ch.net/test/read.cgi/gamedev/1500412168/785
786: 名前は開発中のものです。 [sage] 2017/08/24(木) 14:03:49.04 ID:t7fwZzND >>782 アセットの購入を考えるべきでしょう http://mevius.5ch.net/test/read.cgi/gamedev/1500412168/786
787: 名前は開発中のものです。 [sage] 2017/08/24(木) 14:33:40.86 ID:zGenWhTO Unity以前にC#以前にVSのdebugのチュートリアルやったほうがいいんじゃね まあそれ以前にIT専門学校か大学へ行ったほうがいいかw http://mevius.5ch.net/test/read.cgi/gamedev/1500412168/787
788: 名前は開発中のものです。 [sage] 2017/08/24(木) 15:14:24.07 ID:1qVyt99v 糞コテと躓いてる所が同じだし、所詮アスペの残念な頭では その程度の理解を示すくらいが精一杯なんだろう http://mevius.5ch.net/test/read.cgi/gamedev/1500412168/788
789: 名前は開発中のものです。 [sage] 2017/08/24(木) 16:08:22.11 ID:zZj4TYYg いきなりの書き込みで失礼します。 Unityを触ったことがないのですがインストールするUnityのバージョンはなんでもいいのでしょうか?とても初歩的な質問なのですがとても悩んでおり相談できる相手もいないのでここに書きこませていただきました。 どうかよければ回答お願いしますm(__)m http://mevius.5ch.net/test/read.cgi/gamedev/1500412168/789
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 213 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.014s