X



【3Dゲームエンジン】Unity質問スレッド36
■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。垢版2018/06/07(木) 20:59:23.51ID:Nf/ARvoT
フリー版で開発したゲームは個人・法人を問わず追加のロイヤリティーなしで販売できます。
プラットフォームサポートはiPhone/iPod Touch/iPad、Mac、PC、Web、Wii、Xbox360、Android、PlayStation 3、PlayStation 4、PS Vita他

次スレは>>950以降にできるだけ早く(できれば回答者が回答した後にでも余裕を持って)建てて下さい。

■Unity 2ch Wiki(まとめ、過去ログ、リンク集)
http://www24.atwiki.jp/unity2ch/

●リンク
・Unity(日本公式サイト)
http://unity3d.com/jp
・マニュアル
 http://docs.unity3d.com/ja/current/Manual/index.html
・チュートリアル
 http://unity3d.com/jp/learn/tutorials
・スクリプトリファレンス
 http://docs.unity3d.com/ja/current/ScriptReference/index.html
・FAQ
 http://unity3d.com/jp/unity/faq
・MSDN
 http://msdn.microsoft.com/ja-jp/ms348103←スクリプトのエラー番号をこれで検索すると原因が日本語で出てきます。

前スレ
【3Dゲームエンジン】Unity質問スレッド35
http://mevius.5ch.net/test/read.cgi/gamedev/1523771570/
0436名前は開発中のものです。垢版2018/06/25(月) 14:03:51.47ID:zgwj+Ldn
>>435
ご丁寧に口調まで変えて書き込んでいながら白々しいんだよ
バレたくなかったのが見え見えだぞキムチ
こうやって色々なスレを乱して荒らして回ってるんだなお前


435 名前:名前は開発中のものです。[sage] 投稿日:2018/06/24(日) 22:48:09.42 ID:jJ6M8/KE [3/3]
逆だよ
名前欄いれるのめんどくせぇんだよ

https://mevius.5ch.net/test/read.cgi/gamedev/1528249519/46
46 名前:弟子 ◆rZPPjYuxmQ [sage] 投稿日:2018/06/24(日) 19:59:04.97 ID:jJ6M8/KE [3/3]
>>45
複数の書き込み確認です
なお、規制されるとこの板全部書き込み出来なくなるのでよろしくです
取り合えず、複数の通報してます。
来週もあるようなら他からも通報させてもらいます
あちらに書き込みしたければ、これで止めてくださいね
0437名前は開発中のものです。垢版2018/06/25(月) 15:40:55.77ID:hF+d1Szw
public のことといえば最近気づいたけど
一度変数宣言すると値を書き換えても反映されない
たとえば
public int a=10→実行
public int a=20→実行 a=10のまま
こういう仕様なのか?
困るのが配列のとき
public int[] a=new int[2];
public int[] a=new int[3];→反映されない
変数名を一度書き換えるか宣言と同時にnewしないようにしないといけない
0438名前は開発中のものです。垢版2018/06/25(月) 15:45:11.51ID:IeloQePz
それ変数のスコープはちゃんと確認されてます?
というか二つ同じ名前で定義できないと思うが?
0439名前は開発中のものです。垢版2018/06/25(月) 15:49:36.63ID:dLNwq+HP
何日か前に同様な事言ってた奴だろ
基礎の基礎もやらずに何日もくだらん事に悩んで時間つぶしてる馬鹿初心者だから初心者スレでも逝ったらいいよ
0440名前は開発中のものです。垢版2018/06/25(月) 15:57:12.18ID:ppsCj8dM
どういう状況で動かしてか詳細は判らないけど
VSで一行づつ動かして都度変数の値を確認すれば即解決する問題ですね
ほんとデバッグの方法知らない初心者が多いですね
0441名前は開発中のものです。垢版2018/06/25(月) 15:59:39.66ID:hF+d1Szw
>>438
同じ名前で定義してるのじゃなくて値を書き換えて実行してるだけ
>>439
基礎の基礎というがそんな解説してるとこ見たことないぞ

みんなこの仕様しってるのか?
0442名前は開発中のものです。垢版2018/06/25(月) 16:04:13.08ID:9PF0XJ3X
>>437
オブジェクトにアタッチした後だとInspector側の設定値が優先されるからそうなる。
一度privateにしたりするといいかもね。
0443名前は開発中のものです。垢版2018/06/25(月) 16:17:32.37ID:IeloQePz
>>441
書き換えをインスペクタで行ってるならそちらが優先される
コード上で初期値与えても、インスペクタで上書き
どの時点で上書きされるかは、各関数で確認してみて
0446名前は開発中のものです。垢版2018/06/25(月) 16:23:52.95ID:dLNwq+HP
教えてあげたのにまさか絡まれるとはw
Unityエディタで実行したのかVSで実行したのかも実行ファイルで動かしたのも分からないのに判断できるはずがないですよ
相手にしないほうがいいキチガイみたいですね
0448名前は開発中のものです。垢版2018/06/25(月) 17:16:28.86ID:5xqBoZ3i
調べてないので記憶ベースだけど、c#の初期化の順序は
1.基底クラスの初期化
2.初期化子による初期化
3.コンストラクターのなかのInitializeComponentによる初期化(この中でインスペクタ値が設定)
4.コンストラクターのなかのInitializeComponentの後ろに書いた初期化

な気がするので(もう一度いうと調べてないからなw)
2で初期化した内容が3で初期化されてるんじゃ?

なお俺はUnityもやってない模様w
0449名前は開発中のものです。垢版2018/06/25(月) 17:42:42.91ID:hF+d1Szw
というわけでね 誰も正しい解答をしてないみたいなので答えてあげようと思います
>>390>>392
pubulic int HP=1
Unityではこういう書き方はしないほうがいいようだね
ゲームオブジェクトにアタッチして実行された時点でインスペクタに強制的に値を
入力されてしまうようです
public int HP; void Start(){HP=1;}
スクリプトで書きたい場合はこうしましょう
public変数の場合はnewのタイミングもずらしたほうがいいようです
0450名前は開発中のものです。垢版2018/06/25(月) 17:49:28.07ID:B9XusSRJ
楽しいわ3DGameKit。
3Dアクションゲーつくーるシリーズのようだ。
いまだUnityスキル低い人は手っ取り早く3Dゲーの作成達成可能。
Prefabのスクリプト除いてもちんぷんかんぷんな人でもひととおりそろってるから改造しながら楽しむとスキルアップできるんかな?
0451名前は開発中のものです。垢版2018/06/25(月) 17:56:50.37ID:CdBJ6SaM
C#の初期じゃなくてunityの初期化だと何度言ったら。
あくまでスクリプトなんだよ。C#のプログラム書いてるんじゃなくて、C#を使ってUnityのスクリプト組んでんの。
0452名前は開発中のものです。垢版2018/06/25(月) 18:08:41.58ID:B9XusSRJ
Inspector(GUI)とスクリプトで重複する部分はスクリプトの内容が優先される。
それだけのこと。
0453名前は開発中のものです。垢版2018/06/25(月) 18:13:46.73ID:IeloQePz
>>437
これの意味がわかったわ、てか日本語下手だなぁ
まず最初に
public int a = 10;
void Start () {
print("a:"+a);
}
を実行すると、「a:10」が表示されるで
「public int a = 10;」を 「 public int a = 20;」にして実行する

すると、「a:10」と表示されるわ、これバグじゃね?
って書いてくれればすんなりみんなわかるのに

で、なぜこうなるかというと、public定数なので当然アタッチされているオブジェクトが保存しているから
インスペクタ見ればわかると思うけど、自動でインスペクタに最初の値が保存されていて
それを書き換えてないから、そのまま最初の値が表示されるだけ

それくらい見ればわかるだろ
0455名前は開発中のものです。垢版2018/06/25(月) 18:18:29.04ID:CdBJ6SaM
>>449
そもそも、同一ファイル内で値設定する変数をpublicにする必要があるのか。Unityに限らず、普通どこからどんな変更されるかわかったもんじゃないpublicを避けるために色々工夫するだろ。
インスペクターで値を調整するためにpublicもしくはseriarizeにしたなら、コード側書き換えたのにー?なんて状況にはまずならんだろ。publicを気軽に使いすぎなんだよ。グローバル変数なんて他に方法がないか、メリットがリスクを大きく上回る場合しか許されないのよ普通は。
0456名前は開発中のものです。垢版2018/06/25(月) 18:19:26.40ID:IeloQePz
でだ、じゃこれバグじゃね?
っていうと、そうじゃなくて、コードの初期値を直した場合には
インスペクタのアタッチしているコードの右に歯車のアイコンあるだろ
そこから「Reset」選ぶんだよ
そうすると、最新の値を持ってきてくれるのだ
0457名前は開発中のものです。垢版2018/06/25(月) 18:21:02.46ID:iEl4kGoc
高卒大国日本らしいわ
0458名前は開発中のものです。垢版2018/06/25(月) 18:22:45.06ID:KUXQoQy7
こんな低レベルな話を何時まで続けるんだ
ほんと数日前と全く同じ流れじゃねーか
何度も言うけど初級チュートリアルくらいやれよ
チュートリアルの中で実演してるぞ
0460名前は開発中のものです。垢版2018/06/25(月) 19:40:50.56ID:76RCzFIE
>>458
正直このページ見て最初のインタラクティブチュートリアルはいいとして、その後何したらいいのって感じだけどな。
やればUnityの主要な概念が一通り身につくものあるの?どれなの?って感じだわ。なんか細切れ感というか自分で何必要か何もわからない初心者に取捨選択させるというか。
ちな自分はコースウェアやったけどあんなんでもいいからこれやったらいいのねって分かるやつを置いとけって感じで。
https://unity3d.com/jp/learn/tutorials
0461菩薩@太子垢版2018/06/25(月) 20:23:01.39ID:XPOZeqEj
>>460
汝よ、汝はUnityの主要な概念を一通り身につける必要があると考えるかね?
Unityの入門書を執筆したり専門の講師になったりするのであれば、それは必要だろう。
だが趣味でやる分には、自分の興味のある部分だけ詳しければいいのではないかね?
それ以外の部分は初心者以下でもかまわない。その都度身につければいいことだ。

汝らは我が見守るこのスレで、誉れと思って、それについてよく考えてみなさい。
0462名前は開発中のものです。垢版2018/06/25(月) 20:23:14.82ID:KUXQoQy7
自分でカリキュラムも組めないとか
大学の授業どうやって選択したんだよ
マジで高卒なのか
0463名前は開発中のものです。垢版2018/06/25(月) 20:55:35.04ID:IeloQePz
結局>>437はpublicの意味もインスペクタの意義もわかってないまま偉そうに変なやり方講義して消えたか

まぁ恥ずかしくて出てこれないよな普通の日本人ならな
0464名前は開発中のものです。垢版2018/06/25(月) 21:01:45.32ID:hF+d1Szw
>>463
どこが変なやり方?
Reset押すのは実用的じゃないよ
ひとつの変数変えるたびに他のインスペクタの値も消えてしまうので
そんなことするくらいなら最初からインスペクタで値入れたほうがよくね
0465名前は開発中のものです。垢版2018/06/25(月) 21:15:42.94ID:IeloQePz
笑た、実用的www
君はpublicとインスペクタの意義について考えてから使いなね
じゃないならprivateにしてstartで初期処理すればいいよ
0468名前は開発中のものです。垢版2018/06/25(月) 21:38:49.01ID:hF+d1Szw
わざわざ呼び出しておいて逃げるなよw
そもそもprivateにしろとか逃げの答えだろ
間違ってるならちゃんと答えてみろや
0469名前は開発中のものです。垢版2018/06/25(月) 22:03:26.58ID:hF+d1Szw
public int hp=10
インスペクタが優先される仕様上あまりこういう書き方はしないほうがいいですよ
最初からインスペクタで入力するかstart内などで初期値を設定しましょう

これが間違ってるなら反論どうぞ
0470名前は開発中のものです。垢版2018/06/25(月) 22:05:46.12ID:OQ4KFpDZ
>>462
だーから主要な概念伝えずに何をどうやって判断すんだよボケ
0472名前は開発中のものです。垢版2018/06/25(月) 23:09:55.87ID:SLBBsVcr
>>469
おーまだやってんのか。
publicはインスタンス変数でしょ?
スクリプトをオブジェクトにくっつけるんだけど、その時すでにインスタンス化された後の状態で保存されるのよ。
インスペクターはシリアライズされた値をいじるから、優先とかじゃなく、インスタンスの値を設定してんの。
public int hp=10
は新しいオブジェクトにくっつけた時の初期値としてただしいよ。
startで初期値入れるとか、まさかオブジェクト毎にスクリプトファイルをつくるの?
enemy1.cs enemy2.cs.........ememy100.cs
敵キャラが100体いたファイルも100?
0477名前は開発中のものです。垢版2018/06/25(月) 23:29:10.46ID:iEl4kGoc
チュートリアルもやらないんだった、せめて初心者スレに行くか専門学校に通えばいいのに
0481名前は開発中のものです。垢版2018/06/25(月) 23:47:07.73ID:IeloQePz
>>469
>>472さんが書いてるじゃん、理解できない頭なんだから止めたら?
まず、初期値を変数定義で行うのはなんら問題ない
次に、それがpublicであるならオブジェクトにァタッチするとインスタンス化されてインスペクタに表示される、ここで保存される
だから通常はインスペクタの値を変更する事になる
このスクリプトを例えば敵、弱敵等にァタッチした場合、インスペクタの値を変える事でHPの制御ができるが、start関数で初期値を設定したら全て同じになってしまうよ。
はいダメなゲームの完成
0483名前は開発中のものです。垢版2018/06/25(月) 23:58:58.42ID:hF+d1Szw
はい?
そんな方法いくらでもあるだろw
たとえばIDつけてIDごとにHPを読み込むとか
なぜCS他種類つくらなきゃいけないという発想になるのかわかりませんw
0485名前は開発中のものです。垢版2018/06/26(火) 00:01:43.49ID:KkG7wKan
じゃそれでいいんじゃね
後は見てる人が判断するでしょ

しかしこんだけスレ進んでるのにァセットおじ出てこないな
板ごとアク禁なったのか?w
0486名前は開発中のものです。垢版2018/06/26(火) 00:09:59.17ID:eOOcQUbm
>>484
そういう幼稚な反論しかできないならもういいからw
じゃおまえは値変更するとき256回Reset押すのか?w
0487名前は開発中のものです。垢版2018/06/26(火) 00:17:46.59ID:DXbg5cm+
お前の意向を尊重して、要件を満たすとそうなる
他に選択肢があるなら、自分で示せばいいだけ
Resetなんて使わないし、アスペ特有の潔癖症か何かなのか?
0488名前は開発中のものです。垢版2018/06/26(火) 00:22:53.18ID:eOOcQUbm
インスペクタで設定するかstart内で設定するかと言ってるだろw
幼稚なからみかたしてくんなよw
0491名前は開発中のものです。垢版2018/06/26(火) 00:48:46.31ID:I9/5qNAN
>>488
インスペクタ→インスタンス
start関数→スクリプト

別の場所なのでオブジェクト共通の処理は後者、個々の設定は前者がいい
0493名前は開発中のものです。垢版2018/06/26(火) 01:46:29.63ID:wlaWupK1
こんなスレでも、何となぁく覚えてた用語が、何となぁく理解できた。喧嘩腰の説明でも役に立ったよ、ありがとう。
0494名前は開発中のものです。垢版2018/06/26(火) 02:23:20.32ID:LHdTrEHL
>public のことといえば最近気づいたけど
>というわけでね 誰も正しい解答をしてないみたいなので答えてあげようと思います
最近気付いたという超初心者なのに何でこんなエラそうなんだろうな。
しかも同じ話題が2日前にこのスレで出ている事に気付いてないんだろうか。
0496名前は開発中のものです。垢版2018/06/26(火) 04:01:15.16ID:IS89ooLY
ほらな、俺が>>436の指摘した途端に荒れ始めた。
キムチは初心者のフリして回答者を試す質問したり、複数端末使って別人のふりして荒らしたりするからスルーしなよ。
チュートリアルやれ!基礎をやれ!とツッコミたくなる内容はほぼキムチと思ってスルーしたほうがいい。
0503菩薩@太子垢版2018/06/26(火) 18:14:07.18ID:tWy1Y/Jm
>>501
汝よ、汝は適切なアセットがあったら、質問者に紹介しなさい。
汝は我が見守るこのスレで、誉れと思って、自らのなすべきことをしなさい。
0504名前は開発中のものです。垢版2018/06/26(火) 18:21:39.30ID:hCLMzDoY
無理無理アセットおじさん
他人にはアセット買え買え言うけど自分は一切買わないからわかんないんだもの
0505名前は開発中のものです。垢版2018/06/26(火) 18:47:48.51ID:9fv+PAnA
つかおまえら質問の意味判ってるのか、すごいな
行の高さって何?、親子関係無視して何をしたいの?
0507名前は開発中のものです。垢版2018/06/26(火) 19:12:29.65ID:rN9mjCEw
>>505
ヒエラルキーのオブジェクト名が書いてあるラベルを縦にのばすなり行間つくるなりして見やすくしたいって話じゃね?

エディタ拡張は専門外だからやり方は知らんが
0508菩薩@太子垢版2018/06/26(火) 19:28:46.25ID:tWy1Y/Jm
>>506
汝よ、汝は適切なアセットがあったら、質問者に紹介しなさい。
汝は我が見守るこのスレで、誉れと思って、自らのなすべきことをしなさい。
0509500垢版2018/06/26(火) 20:02:35.17ID:K+5CMwbD
ラベルの行の高さ(幅)が1.5倍くらい広がれば使いやすいな、と思ってエディタ拡張でできないか思案していました。
なにか手がかりでもあればご教授下さい。
0511名前は開発中のものです。垢版2018/06/26(火) 20:43:55.87ID:H/iex1R2
フォントそれ
0512500垢版2018/06/26(火) 20:46:45.44ID:K+5CMwbD
フォントサイズは、エディタ拡張の何のAPIを使えばいいでしょうか?
0514名前は開発中のものです。垢版2018/06/26(火) 21:16:45.51ID:SYFoINsG
Unity 2017でSubstance マテリアルで質感を設定したシーンをスクリプトでロードするときにかなり読み込みを待たされるんだけどこういう物なのでしょうか?
キューブを数個置いただけのシーンでもロードが劇的に遅い、Substance マテリアルを削除すると一瞬だからあからさまに原因はSubstance だと思う
何か特別な設定とかこれはやっておけみたいな決まりみたいな物があるのでしょうか?
0515菩薩@太子垢版2018/06/26(火) 21:24:28.60ID:tWy1Y/Jm
>>513
汝よ、汝は適切なアセットがあったら、質問者に紹介しなさい。
汝は我が見守るこのスレで、誉れと思って、自らのなすべきことをしなさい。
0526名前は開発中のものです。垢版2018/06/27(水) 05:52:24.02ID:MZGUGuBC
すみません、例えば、ゲーム本筋をまわすManagerスクリプトを作ったとして
そのスクリプト内で、
各ゲームオブジェクトにアセットしたスクリプトのメソッドを使うためには
『 //ゲームオブジェクトを検索し取得する
 変数名 = GameObject.Find("オブジェクト名"); 』
を必ず宣言する必要があるのですよね?

しかし、Managerスクリプト内にて
FindObjectOfType<スクリプト名>().メソッド名();
だと、取得抜きで、いきなり他のスクリプトのメソッドを利用できるのは
なぜですか?
0527名前は開発中のものです。垢版2018/06/27(水) 05:59:28.49ID:UNiIJaZd
>>526
それは1行で取得&関数呼び出ししてるからだよ。
ただ、取得が失敗した時にエラーになるから分けた方が安全かな。
0528名前は開発中のものです。垢版2018/06/27(水) 07:45:22.36ID:3rw/3qxm
>>526
>必ず宣言する必要があるのですよね?
そんなことはなく、例えばオブジェクトaにアタッチされたbのメソッドcを使うとして
GameObject.Find("a").GetComponent<b>().c()
と書けばFindでも一行でメソッドを呼び出せる
逆にFindObjectOfTypeで探したbのインスタンスを変数に保存することもできる
何度もbやcを呼び出すときは変数に保存した方が良いというだけ
0529名前は開発中のものです。垢版2018/06/27(水) 08:25:12.50ID:N7q8t5sV
>キムチは初心者のフリして回答者を試す質問したり、複数端末使って別人のふりして荒らしたりするからスルーしなよ。
>チュートリアルやれ!基礎をやれ!とツッコミたくなる内容はほぼキムチと思ってスルーしたほうがいい。
0530名前は開発中のものです。垢版2018/06/27(水) 09:18:58.70ID:MZGUGuBC
>>527
>>528
ありがとうございます。まだちょっと理解できてないのですが
そのGameObject.Find("a").GetComponent<b>().c()は
aというオブジェクトを参照して、それにアセットしてるスクリプトbのメソッドcにアクセス、で
FindObjectOfType<b>().c()では
スクリプトbを参照して、その中のメソッドcにアクセスする、ですよね?

逆に言えば、FindObjectOfTypeではゲームオブジェクトにアセットした
スクリプトにはアクセスできない、ということでしょうか?
でも、FindObjectOfType<Object>でオブジェクトを探せる、とありました。
これはどういうことでしょうか?
この探すObjectというのはGameObject.Findで取得するゲームオブジェクトのことでは無いのでしょうか?
Unity上でのゲームオブジェクトとオブジェクトクラスの違いが理解できていません。
ゲームオブジェクトの中身ってオブジェクトクラスに入ってる情報じゃ無いんですか?

FindObjectOfTypeはゲームオブジェクトに入って居ない
スクリプトにアクセスする時だけ使うってことですか?
0531菩薩@太子垢版2018/06/27(水) 09:25:55.83ID:kWFh9Zom
>>529
汝よ、我は初心者であるよ。それと我はコテを変更したのだよ。名無し@キムチから菩薩@太子にねw
それはこの5chのみならず、ツイッターやブログでも同様の変更をおこなっているのだよ。つまり進化だね。
ところで汝よ、我はMakeHumanでつくったどんなキャラにも表情をつけるスクリプトを完成させたけど、MegaFiersなんかに比べるとしょぼすぎるので、アセットに登録申請するのはやめとくよw

https://youtu.be/4LPmcECipkc
0532名前は開発中のものです。垢版2018/06/27(水) 09:53:40.65ID:aLDj3QMZ
自白してるようなタイミングでレスしててワロス
過疎スレで自演するなら一日くらい置いてレスしたほうがいいよw
0534名前は開発中のものです。垢版2018/06/27(水) 09:57:12.54ID:RXVaBhAJ
>>530
FindObject〜自体の挙動を知りたいならまずググれ
ゲームオブジェクトも(スクリプト含む)コンポーネントもobject型の派生だから検索できるが
検索対象はインスタンス化されたものだけで、最初に見つけた一つを返す
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況