[過去ログ] 【3Dゲームエンジン】Unity質問スレッド36 (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
448: 名前は開発中のものです。 [sage] 2018/06/25(月) 17:16:28.86 ID:5xqBoZ3i(1) AAS
調べてないので記憶ベースだけど、c#の初期化の順序は
1.基底クラスの初期化
2.初期化子による初期化
3.コンストラクターのなかのInitializeComponentによる初期化(この中でインスペクタ値が設定)
4.コンストラクターのなかのInitializeComponentの後ろに書いた初期化

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

なお俺はUnityもやってない模様w
449
(1): 名前は開発中のものです。 [sage] 2018/06/25(月) 17:42:42.91 ID:hF+d1Szw(6/13) AAS
というわけでね 誰も正しい解答をしてないみたいなので答えてあげようと思います
>>390
390(1): 名前は開発中のものです。 [] 2018/06/23(土) 03:08:22.60 ID:GjE91D+n(1/11) AAS
すみません、超初心者です。ちょっとわからないのですが
弾のオブジェクトを作ったとして、
それにアセットしたスクリプト内の変数宣言させたとするじゃないですか?
まあ例えば、弾のHPの変数で、「public int HP=1;」と。
そしたらそのオブジェクト選択時、inspectorに変数HPの項目が追加されてるわけですが
その状態でそのHPの項目の数字を変更できるじゃないですか?
スクリプトの宣言内で変数の値を決めるのと、
inspectorにある項目で変数の値を決めるのと、なんか違うんですか?
どっちかの値を変えてセーブしたら、反映されてくれると思ったら
パッと見、反映してくれないのですが。
もしかしてinspector上で各数値を変更できる用途は
制作中のデバッグやテスト等であって、
実際の中身はスクリプトの方で決めていかないといけないということですか?
>>392
392(1): 名前は開発中のものです。 [] 2018/06/23(土) 03:14:20.21 ID:GjE91D+n(2/11) AAS
例えば、スクリプト上でpublic bool Power=true;と宣言しているのに
そのオブジェクトのinspector上の Powerの項目でfalseに書き換えると、
そうした場合、流れ的にはゲーム上ではどんな状況になってるんでしょうか??

私、なんかおかしい相談なってます??
よくわかりません。
pubulic int HP=1
Unityではこういう書き方はしないほうがいいようだね
ゲームオブジェクトにアタッチして実行された時点でインスペクタに強制的に値を
入力されてしまうようです
public int HP; void Start(){HP=1;}
スクリプトで書きたい場合はこうしましょう
public変数の場合はnewのタイミングもずらしたほうがいいようです
450: 名前は開発中のものです。 [] 2018/06/25(月) 17:49:28.07 ID:B9XusSRJ(1/2) AAS
楽しいわ3DGameKit。
3Dアクションゲーつくーるシリーズのようだ。
いまだUnityスキル低い人は手っ取り早く3Dゲーの作成達成可能。
Prefabのスクリプト除いてもちんぷんかんぷんな人でもひととおりそろってるから改造しながら楽しむとスキルアップできるんかな?
451: 名前は開発中のものです。 [sage] 2018/06/25(月) 17:56:50.37 ID:CdBJ6SaM(1/2) AAS
C#の初期じゃなくてunityの初期化だと何度言ったら。
あくまでスクリプトなんだよ。C#のプログラム書いてるんじゃなくて、C#を使ってUnityのスクリプト組んでんの。
452
(1): 名前は開発中のものです。 [] 2018/06/25(月) 18:08:41.58 ID:B9XusSRJ(2/2) AAS
Inspector(GUI)とスクリプトで重複する部分はスクリプトの内容が優先される。
それだけのこと。
453: 名前は開発中のものです。 [sage] 2018/06/25(月) 18:13:46.73 ID:IeloQePz(3/8) AAS
>>437
437(3): 名前は開発中のものです。 [sage] 2018/06/25(月) 15:40:55.77 ID:hF+d1Szw(1/13) AAS
public のことといえば最近気づいたけど
一度変数宣言すると値を書き換えても反映されない
たとえば
public int a=10→実行
public int a=20→実行 a=10のまま
こういう仕様なのか?
困るのが配列のとき
public int[] a=new int[2];
public int[] a=new int[3];→反映されない
変数名を一度書き換えるか宣言と同時にnewしないようにしないといけない
これの意味がわかったわ、てか日本語下手だなぁ
まず最初に
public int a = 10;
void Start () {
print("a:"+a);
}
を実行すると、「a:10」が表示されるで
「public int a = 10;」を 「 public int a = 20;」にして実行する

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

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

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

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

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

これが間違ってるなら反論どうぞ
470: 名前は開発中のものです。 [] 2018/06/25(月) 22:05:46.12 ID:OQ4KFpDZ(1) AAS
>>462
だーから主要な概念伝えずに何をどうやって判断すんだよボケ
471: 名前は開発中のものです。 [sage] 2018/06/25(月) 22:35:46.79 ID:Wzw3Rrja(1) AAS
まともに質問したい人はここで

【ゲームエンジン】Unity初心者質問スレBuild1
2chスレ:gamedev
472
(2): 名前は開発中のものです。 [sage] 2018/06/25(月) 23:09:55.87 ID:SLBBsVcr(1) AAS
>>469
おーまだやってんのか。
publicはインスタンス変数でしょ?
スクリプトをオブジェクトにくっつけるんだけど、その時すでにインスタンス化された後の状態で保存されるのよ。
インスペクターはシリアライズされた値をいじるから、優先とかじゃなく、インスタンスの値を設定してんの。
public int hp=10
は新しいオブジェクトにくっつけた時の初期値としてただしいよ。
startで初期値入れるとか、まさかオブジェクト毎にスクリプトファイルをつくるの?
enemy1.cs enemy2.cs.........ememy100.cs
敵キャラが100体いたファイルも100?
1-
あと 530 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.015s