【ゲームエンジン】Unity初心者質問スレBuild1at GAMEDEV
【ゲームエンジン】Unity初心者質問スレBuild1 - 暇つぶし2ch175:名前は開発中のものです。
18/07/06 09:38:00.97 diIi72QZ.net
>>165
>>166
ご指導ありがとうございます。

下記で取得したものを
------------------------------
private void GetSceneTreeObjByFiles( ref List<SceneTreeObj> listParent, string downloadPath )
{
var path = FTP.CommonWord.GetDownloadPathByPlatform( downloadPath );
{
var files = GetFilesFromExtension( path, FTP.CommonWord.ExtensionPSD );
RegisterFiles( ref listParent, files, path, (Texture2D)Resources.Load( "button_com_file_shadow" ) );
files = GetFilesFromExtension( path, FTP.CommonWord.ExtensionJPG );
RegisterFiles( ref listParent, files, path, (Texture2D)Resources.Load( "button_com_file_shadow" ) );
}
}
------------------------------
こちらで条件付けしているのですが、
------------------------------
/// ファイル拡張子【psd】
public const string ExtensionPSD = ".psd";
------------------------------
この場言、"downloadPath"を小文字化するのですが、どのように書けばよいのでしょうか。
急遽直さなければならず、ご教授いただければ幸いです。

176:名前は開発中のものです。
18/07/06 09:49:28.52 JxKSLFmq.net
>>167
ふらっと C#,C♯,C#(初心者用) Part138
スレリンク(tech板)

177:名前は開発中のものです。
18/07/06 09:55:13.52 mqKRW7N6.net
>>167
試してないけど
downladpatth.ToLowre()でならないかしら

178:名前は開発中のものです。
18/07/06 09:59:22.23 mqKRW7N6.net
>>169
入力ミス
downladPath.ToLowre()
ね。

179:弟子
18/07/06 10:24:48.79 PYnnNWaZ.net
ToLower()
URLリンク(msdn.microsoft.com)(v=vs.110).aspx

180:名前は開発中のものです。
18/07/06 11:01:26.39 ziEtrYYq.net
文字列 小文字 C#
でググれば一発
知識が少なくてC#なのかUnityなのかわかんなくても結果は同じ

181:名前は開発中のものです。
18/07/06 20:37:16.86 TxoEW2Q0.net
>>弟子 ◆rZPPjYuxmQ
すみません、>>158ができませんでした。
宣言したあと、
「Manager.title.activeSelf」では
下線のエラーが出てしまいます。
URLリンク(dl1.getuploader.com)
確かに考えてみると、
public static GameObject title;の宣言から
使用時にManager.titleでは繋がらない気がしますが、
宣言場所が問題なんでしょうか?

182:>>34
18/07/06 20:50:18.52 gEW+Hr/Q.net
Manager.title の青文字、Managerはいらないよ

183:名前は開発中のものです。
18/07/06 20:52:15.36 gEW+Hr/Q.net
if(Manager.title.activeSelf == false)
じゃなくて
if(title.activeSelf == false)
ね。

184:名前は開発中のものです。
18/07/06 20:59:50.58 TxoEW2Q0.net
>>175
ありがとうございます。
そう思って、自分も「Manager.」を削ってみたんです。
そしたらちゃんと動くんですが、
敵が弾を一切撃たないままでして、、、

185:名前は開発中のものです。
18/07/06 21:00:36.73 TxoEW2Q0.net
やはり、NULLが返ってきてるんです。。
んー

186:名前は開発中のものです。
18/07/06 21:17:26.03 VvyEnY8t.net
そのスクリプトを


187:アタッチしたゲームオブジェクトは、もしかして複数ないだろうね?



188:名前は開発中のものです。
18/07/06 21:23:04.84 HglSf1KI.net
static書く場所間違えてんぞ
宣言すんのはManager.csの中だ

189:名前は開発中のものです。
18/07/06 21:31:14.20 HglSf1KI.net
Enemy.csの中にはFindがないだろ
Maneger.csの中にFindがあるからそれを使わせてもらうってことだ
ちゃんと理解しろ

190:名前は開発中のものです。
18/07/06 21:43:49.49 gEW+Hr/Q.net
このEnemy.csが付いているオブジェクトにSpaceshipコンポーネントも付いてんの?
24行目の
Spaceship = GetComponent<Spaceship>();
が気になったんだけど。
Enemy.csをつけてるオブジェクトのinspecter画像あげてみなよ。

191:名前は開発中のものです。
18/07/06 21:43:58.07 tJg4NY0i.net
なんだ!その言い方は。自分で作ったこともないクセに生意気なことを言うなよ!

192:名前は開発中のものです。
18/07/06 21:54:18.65 gEW+Hr/Q.net
>>176
あ、前にソースあがってますね。みてきます。

193:名前は開発中のものです。
18/07/06 22:31:47.47 3k4W8n5C.net
whileのところ。titleの取得はここじゃなきゃ意味ない。
URLリンク(i.imgur.com)

194:名前は開発中のものです。
18/07/06 23:02:04.45 3k4W8n5C.net
>>183 =>>184です。
whileの中の
if (spaceship.canShot)&#8232; {&#8232; spaceship.Shot(shotPosition);&#8232; }
のまえに
GameObject title = GameObject.Find("Title");&#8232; if (title)&#8232; {&#8232; spaceship.canShot = false;&#8232; }
を付け足すと一応なるよ。
でもこのプロジェクト、初心者にはむりだろ。なんでupdate()じゃなくて無理矢理while
使ってんだろ。

195:名前は開発中のものです。
18/07/06 23:03:44.11 3k4W8n5C.net
>>185
な、改行が、、

196:名前は開発中のものです。
18/07/06 23:10:51.46 HglSf1KI.net
おいおい
もう正解でてるのに違うこと書いて混乱させるなよ

197:弟子
18/07/07 02:22:02.54 K1LNb5pO.net
>>173
ごめんね、分かり易いように全ソース上げるべきだったかな
とりあえずSSです
URLリンク(i.gyazo.com)
あと前回からも分かるように名無しさんはソース見て無かったり、とんちんかんな答も多いので間にうけないでね

198:名前は開発中のものです。
18/07/07 03:30:48.40 mRGE11IO.net
まず、レスをくださった名無しの皆さま、
ありがとうございました。勉強になりました。
>>弟子 ◆rZPPjYuxmQさん
ソースをあげるお手間を取らせて申し訳ありません。
おかげで自分の間違いも理解でき、無事ゲームも動きました。
ありがとうございます。
それと今回はとても勉強になりました、
Unityゲーム制作方法がまたひとつ理解出来たことを実感できました。
投げることなく、これからも頑張っていきたいのでまたお時間がある時は
どうぞよろしくお願い致します。
>>185
>でもこのプロジェクト、初心者にはむりだろ。
>なんでupdate()じゃなくて無理矢理while使ってんだろ。
考えてみると、確かにそうでした。
start()にはSpaceshipコンポーネント取得だけを記述し、
update()を作り、そこに移動とショットのメソッドを記述するのが
よくみるソースですよね、、気になるので
ちょっと自分でそうしてみます。

199:弟子
18/07/07 09:24:11.16 K1LNb5pO.net
>>189
その修正は今後の力になりますね
while(true)の形式は昔のゲームでよく見ますね
何にせよ途中で投げ出さない事が力になると思います

200:名前は開発中のものです。
18/07/07 11:12:48.46 EkXNa58T.net
>>169
167です。
遅くなりましたが、ご連絡いただきましたカタチで対応したところ上手くいきました。
ご指導ありがとうございました!

201:名前は開発中のものです。
18/07/07 12:04:39.34 uvTZMuyK.net
C言語とかどこから勉強すればいいのか
全くわからん
パーツ組み合わせて勝手に作ってくれるツールとかないんかな

202:名前は開発中のものです。
18/07/07 14:56:25.98 ZcP3i1gQ.net
>>192
なに、Unityスレで蟹飯やらUPEの話をしたいとな?

203:名前は開発中のものです。
18/07/07 15:15:03.55 oT3GXRo8.net
>>192
アセットを探しましょう!
有料アセットにはいいものがいっぱいですから!

204:名前は開発中のものです。
18/07/07 15:21:59.58 VmA3Nk3U.net
プログラミングで混乱してる奴はスクリプト間の動きを知ったほうがいい。
シングルスレッドだけで良い。その先の技術はまだまだ後回し。
まずは、この図を頭に叩き込んで見てくれ。
URLリンク(docs.unity3d.com)

205:弟子
18/07/07 15:27:51.44 K1LNb5pO.net
>>192
別に勉強することなんかない
やりたいことが決まってれば、それを行うための方法をgglなりここで聞けばいい
やりたいことが決まってないなら簡単な事、例えば四角を表示して墜ちてくる、次にA,Dで左右に動かすなんかやればいいと思う
その次はぶつかった時の処理やミサイル発射とか、一つできたら次に広げていけば自然と身につく

206:名前は開発中のものです。
18/07/07 16:25:52.52 BIKvv2AG.net
>>196
何も出来ない人は質問に答えないで下さい。迷惑です

207:名前は開発中のものです。
18/07/07 19:47:47.40 zm6PvQJ6.net
よりによって196w

208:名前は開発中のものです。
18/07/07 20:26:34.78 Iv6KIDqQ.net
>>193
今時蟹飯なんていってわかる奴いるのかよ。

209:名前は開発中のものです。
18/07/07 21:33:06.60 G1vtLFdf.net
コーディングで白背景は目が痛いな。

210:名前は開発中のものです。
18/07/08 03:35:46.42 /vo2AcUq.net
>>195
シングルスレッドってそのページの
スクリプトライフサイクルフローチャートって奴ですよね?
項目が多すぎて、しかも知らないものばかりで
わけがわかりません。もう少しシンプル化できませんか?

211:名前は開発中のものです。
18/07/08 08:32:44.77 +e8vKp03.net
>>200
え、まじ?統合環境使いだしてからずっと白背景だな。
たしかにCビルダー使いだす前は、黒背景にしてたかもしれん。

212:名前は開発中のものです。
18/07/08 11:25:39.56 XHY+bU4w.net
>>201
う、マジか、この図で分からなければ、中々キツイぞ。
まとめては俺は必要無かったんで良いリンクとかは、他の賢人に任すわ
少しだけ概要な
シングルスレッド云々は、unityは元々シングルスレッド志向のmonobehaviorの動きで動いてるってこった。
そしてその動きがこの図な
んで、この図の
awake~start迄が最初の1ターンだけ発行
んて、fixed update~yield waitfor fixed update迄が、固定秒数毎に毎ターン
update~late update迄がベストエフォート秒毎の毎ターン
それ以降のは、素人としては難しいんで、覚える必要無し
て所か、ターンて書いたのは分かり易くする為な。
本当は適切な言葉あるんでそれは調べてね。

213:名前は開発中のものです。
18/07/08 11:31:56.95 XHY+bU4w.net
言い忘れたが、重要なのは
これらの動きが、全ゲームオブジェクトに貼り付けられたスクリプト(monobehavior)で一斉に並列(あくまでシングルスレッドの分割)で動作するって所な
まあ、がんがれ

214:名前は開発中のものです。
18/07/08 12:32:40.48 qKbg52AD.net
これが読めないってのは…
あぁ、初心者スレかそういうレベルの初心者も居るか。

215:名前は開発中のものです。
18/07/09 19:21:15.90 tGtIqOna.net
unityで球と直線の交点を求めるにはどうすればいいですか?

216:名前は開発中のものです。
18/07/09 19:39:45.22 E1xkTZ4l.net
一番楽なのはRaycast
それ以外は直線と円の交点を求める式で検索

217:名前は開発中のものです。
18/07/09 20:12:59.49 tGtIqOna.net
ありがとう

218:265
18/07/09 21:30:47.56 CkgNFaVi.net
>>206
アセットを買えば良いと思います!

219:名前は開発中のものです。
18/07/09 23:17:42.75 Ip18eAqk.net
質問です。
キーボード入力のGetAxisを使ってプレイヤーを動かすタイプのPCゲームを作っていて、
マウスでも入力が可能にしようと思い、仮想ジョイパット等の記事を参考にしてみたのですが
肝心のキーボード入力とマウス入力との入力加速度等のすり合わせがうまくいきません。
1.(マウスをクリック等すると)キーボードの矢印キーを押したことになるスクリプトはありますか?
  (自分でも探してみたのですがキーの代入のようなものを見つけられませんでした)
2.もしくは、GetAxisの入力が0から1.0fになるまでの時間と加速度の式はどこかで見れますか?
  (それが分かればマウスでの入力もGetAxisと同じ挙動にできると思います)

220:名前は開発中のものです。
18/07/10 00:02:19.44 DExfR9FT.net
edit>projectSetting>inputは出せるか?
そこでsizeを一個増やして、nameに好きな文字入れてボタン作ってくれ
んで、positive buttonにleftかrightかupかdownか押したことにしたい方向いれてくれ。
んで、alt positive buttonに「mouse 0」って入れてくれ
Input.GetAxis("つけた名前")で、マウスか矢印おした時にaxis値が取れるかと思う。
0から1になる増加値らへんはここみてくれえ
URLリンク(qiita.com)

221:名前は開発中のものです。
18/07/10 04:25:28.04 I4DvWkaD.net
迅速な回答ありがとうございます!
しかし、私の質問が悪かったのですが、私が試していたのは下記のタイプでして、(丸きり同じ仕様ではありませんが)
URLリンク(kan-kikuchi.hatenablog.com)
inputそのものを増やす方法で対応できるのかやや困惑気味ですが少し色々試してみます。
ありがとうございました。

222:名前は開発中のものです。
18/07/11 23:57:57.02 o/82KR0c.net
UnityでWindowsMR用のプログラムをつくってるのですが、
ハンドコントローラのボタン操作でテレポート(ワープ)しないようにするにはどうすればいいですか?
MixedRealityToolkit->ConfigureででてくるApplyを3つとも適用した状態です

223:弟子
18/07/12 22:20:09.55 duOHPzc3.net
難しそうな質問ですねぇここは初心者用なので答えが出ないかもしれませんが
とりあえずggったのですが、きっともう読まれているのですかねぇ…
URLリンク(tks-yoshinaga.hatenablog.com)
URLリンク(framesynthesis.jp)
URLリンク(sirohood.exp.jp)

224:名前は開発中のものです。
18/07/14 15:39:12.44 9sFMmlen.net
uGUIについて質問です
Canvas->空のGameObject->複数のテキスト
という構造で複数のテキストを表示しているのですが
たまにすべてのテキストが空のGameObjectの座標に集まってしまい、レイアウトが崩れてしまいます
その都度手動で元のレイアウトに戻すのが面倒なので、レイアウトが崩れない対策があれば教えてください

225:名前は開発中のものです。
18/07/14 20:52:46.97 trAsPRCC.net
>>215
アセットストアで検索してみて


226:はどうでしょうか?



227:弟子
18/07/15 09:52:55.71 +fIs9TbR.net
>>215
テキストの親のobjectにAddComponentでLayoutにあるLayoutGroupを追加してみてください
↓同じテキストの位置
URLリンク(i.gyazo.com)
↓layoutをオンすると自動で整列
URLリンク(i.gyazo.com)
これはVerticalLayoutということで縦に自動で整列します
他にもいろいろあるのでご自分の要望にあったのを取り入れれば良いかと思います

228:名前は開発中のものです。
18/07/15 10:07:37.36 7ZKErhFA.net
>>215
たまにそうなるのは根本的に何かが間違っている
原因究明が大事

229:名前は開発中のものです。
18/07/15 11:39:25.50 l4mbViwe.net
>>215
実行中じゃないのか?
実行中に変わった座標が、実行終了後に維持されるのは聞いたことないなぁ。メッシュやマテリアルは実行中に触るとそのままってのはあったけど。

230:名前は開発中のものです。
18/07/15 15:35:45.97 3jehjN70.net
>>217
丁寧な回答ありがとうございます
私のプロジェクトに
空のゲームオブジェクト->レイアウトグループ->テキスト
の構造がありましたが、
その場合はレイアウトグループの位置は変わってしまっていましたが、グループ内のテキストの配置は維持されていました
つまり、レイアウトグループの子の構造は崩れないが、空のゲームオブジェクトの子は崩れるということです
結局、空のゲームオブジェクト以下にGUIを配置しているのが問題な気がしますね
対策は、入れ子の親には必ずレイアウトグループをアタッチするといったところでしょうか
しかしレイアウトの自由度が制限されるのが問題ですね・・・
>>218
原因は未だに不明です
再現性の無い現象なのでなかなか原因究明が難しいです
>>219
気づいたら崩れているのでタイミングはよく分かっていません
感覚としては、実行後に崩れている傾向が強いと感じています

231:名前は開発中のものです。
18/07/15 17:16:08.29 7ZKErhFA.net
>>220
原因が不明?
それ最悪だよ、
泥縄式に対処してたらこれから先バグに悩まされる
リリース後にもいつ発生するかわからない
プロジェクトが小さいうちに原因をはっきりさせることをおすすめする

232:名前は開発中のものです。
18/07/15 18:42:31.42 3jehjN70.net
2017.3のバグみたいです
報告多数ですね
URLリンク(forum.unity.com)
I encountered this after upgrading to 2017.3. One of my UI windows was all messed up,
so I tried to fix it, and upon hitting "Apply", some elements auto-centered.
After reviewing everything for rogue layouts or anything like that, and with it happening on other elements, I went to the internet and came across a few threads like this.
Fortunately, I saved a copy of my 2017.2 project and going back was as easy as renaming a folder.
But I think this is a pretty severe bug, it could effectively stale a project relying heavily on UI.

233:名前は開発中のものです。
18/07/15 19:21:39.40 nN3qp9d6.net
さすが公式フォーラム
現役の人が集まるだけあって被害者多数でワロタ

234:名前は開発中のものです。
18/07/15 22:33:17.00 3jehjN70.net
このバグ数ヶ月放置されてけっこう問題になってたみたい



235:ディターのバグとかどうしようもないし、最新版を使うことにしました



236:名前は開発中のものです。
18/07/15 23:09:45.09 MAbCEPsD.net
>>222
日本語で話せやガイジ
ここは日本のUnityスレだぞ

237:名前は開発中のものです。
18/07/16 08:31:47.70 Clqj8SOY.net
>>225
いや、unityつかうなら英語くらい覚えろよ……

238:名前は開発中のものです。
18/07/16 08:36:44.72 TKHzOtNK.net
誰か翻訳AI完成させて

239:名前は開発中のものです。
18/07/16 13:24:51.73 bDaRS4qJ.net
英語読めないのにUnityって冗談でしょ

240:名前は開発中のものです。
18/07/16 18:28:16.15 spAkMe49.net
>>225はアセットおじさんか
言葉の節々に知能の低さ、羞恥心の無さがにじみ出ているのは流石だな
誰か「アセットを買えば英語力も上がるし羞恥心も備わりますよ」って教えてやれよ

241:名前は開発中のものです。
18/07/17 15:11:04.49 6120ASjx.net
>>229
アセットを買えばそんな勘違いもなくなりますよ

242:名前は開発中のものです。
18/07/19 05:14:32.69 k0fYdkdd.net
スマホアプリ作っている人は
iphoneとandroid両方持ってるの?
androidしかないんだけどipone必要ですか?あとmacも無いんですけどこれもいりますか?

243:名前は開発中のものです。
18/07/19 06:05:50.04 ElRV+zTP.net
>>231
macないとiPhone開発は実質無理だと思っていいよ
両OSにアプリ出すならmacは必須
iPhoneはなくても最悪mac上のエミュとかiPadとかでもなんとかなる

244:名前は開発中のものです。
18/07/19 07:04:32.59 k0fYdkdd.net
同じアプリでもiPhoneのが売上いいみたいだから出したいけど、mac必須ですか…
androidでmac買えるぐらい稼げたら買おうかな

245:名前は開発中のものです。
18/07/19 07:14:57.77 GFvO8zga.net
>>233
マックなんて2万でかえるだろ

246:名前は開発中のものです。
18/07/19 09:15:51.75 ZpvrD2eM.net
無理

247:名前は開発中のものです。
18/07/19 14:41:39.19 UVLnnnpG.net
CommandInvokationFailure: Unable to list target platforms. Please make sure the android sdk path is correct. See the Console for more details.
って言われてAndroidでビルドができないよー、ちゃんとAndroid SDK toolsを25.2.5にしてもダメだったし
SDKが古いかもってことも書いてあったからSDK消して入れなおしてtoolsを25.2.5にしてビルドしてもダメだったし誰か助けてー!

248:弟子
18/07/19 14:48:09.10 cAgC0uNk.net
>>236
コンソールに詳細でてる?

249:名前は開発中のものです。
18/07/19 16:25:47.27 ZpvrD2eM.net
アレだな。

250:名前は開発中のものです。
18/07/20 22:57:05.42 KCUa1hS5.net
>>233
AppStoreは毎年1万くらい掛かるけど、GooglePlayなら2500円払えばあとは儲けるだけだからなぁ。

251:名前は開発中のものです。
18/07/20 23:49:34.13 5krUI5Wa.net
2500円回収できんのか?w

252:名前は開発中のものです。
18/07/20 23:56:29.44 BE6ITBtY.net
>>240
えっお前は出来ないのwwwwww

253:名前は開発中のものです。
18/07/21 02:10:26.26 p4e4X/of.net
しっかり考えてちゃんとしたもの作って出さないと
GooglePlayは簡単には回収できないよ

254:名前は開発中のものです。
18/07/21 04:47:48.99 sXvBSliU.net
個人アプリ開発者の9割はその年間2500円も稼げないけどね

255:名前は開発中のものです。
18/07/21 08:02:15.02 PiBb+geA.net
そもそも自称開発者は、アプリを完成させ、リリースすることすら・・・

256:名前は開発中のものです。
18/07/21 10:33:31.64 Wf3Uoe2X.net
それはお前が出来てないだけ。皆そうだと思っていれば幸せなんだろうな

257:名前は開発中のものです。
18/07/21 18:00:40.90 EggmhhQD.net
ソーシャルゲームが流行る前はしょぼい物作って�


258:澀ooglePlayのリストに出るから余裕で回収できたけどね。 今はリリースされたことすら知られないから…。



259:名前は開発中のものです。
18/07/26 04:46:43.92 kNQ25ubs.net
始めたばっかだけどunityで適当に画像入れてsave projectして、入り直したら画像じゃなくて何か別の物に変換されててlayer編集が効かなくて心折れそう、誰か助けてクレメンス

260:弟子
18/07/26 05:42:19.49 fev1xFrc.net
さすがにそれじゃエスパーさえわからんで
なにがSSとか無いのん?

261:名前は開発中のものです。
18/07/26 07:19:48.83 H78k3yRK.net
左が初期の画像、変わったのが右側って感じ
うまく貼れてなかったらスマソ
URLリンク(imepic.jp)

262:弟子
18/07/26 07:32:26.89 fev1xFrc.net
>>249
右みるとトランスフォームが子供になってるようだけど
手順としては、シーンに画像を張って、セーブしただけですか?
もし可能ならプロジェクトごとアップできます?

263:名前は開発中のものです。
18/07/26 08:05:18.50 1mgpo5S/.net
>>250
そうです、貼ってセーブしただけです。
プロジェクトは仕事から帰ったら揚げます(社畜)
本体の設定に問題ある感じですかね?

264:弟子
18/07/26 21:17:51.66 fev1xFrc.net
一応画像をアセットにドラッグし、そのごヒエラルキにドラッグして
セーブした画面です
URLリンク(i.gyazo.com)
特に変化しないようです
自分はUnity2017.3.1f1を使ってます

265:名前は開発中のものです。
18/07/27 05:07:03.51 u+ao3S/Q.net
Unity 2018.2を使っているのですがunityの設定はどこでできますか?
ちなみに画像のバージョンはUnity 4.2.0 です
URLリンク(i.imgur.com)

266:名前は開発中のものです。
18/07/27 05:10:40.64 u+ao3S/Q.net
いい忘れてました自分はWindowsを使っています

267:弟子
18/07/27 09:03:28.71 +juP2VsI.net
>>253
>unityの設定はどこでできますか?
Unityの何の設定でしょうか?
>いい忘れてました自分はWindows
画像はどうみてもMacですが、人の画像でしょうか?

268:名前は開発中のものです。
18/07/27 09:27:51.68 u+ao3S/Q.net
>>253
解決しました
>>255
再生中に周りの色を変える設定をしようとしたのですがeditのところでできました

269:名前は開発中のものです。
18/07/27 11:27:25.50 PHzeq30F.net
>>255
その程度もエスパーできないのかよ

270:弟子
18/07/27 13:05:22.56 +juP2VsI.net
>>256
無事に出来て良かったです

271:名前は開発中のものです。
18/07/27 23:23:17.09 xl4o2aTS.net
>>252
結局本体再DLして解決しました
付き合ってくれてありがとうございます…

272:弟子
18/07/27 23:33:40.12 +juP2VsI.net
>>259
無事に解決してなによりです!
また何かあればお気軽に!

273:名前は開発中のものです。
18/08/02 14:10:27.16 8NS2VTtG.net
すみません、Unity独特なプレハブについて
どういうもので、具体的にはどういう使い方ができるのか、
わかりやすく教えてくれませんか?
これではわかりません。
URLリンク(unity3d-com-jp-learn-tutorials.s3.amazonaws.com)

274:名前は開発中のものです。
18/08/02 14:26:45.67 YQXK/fNI.net
例えばシューティングなどで同じ敵を100体出したいとする
シーンに1体作ってあとはコピペで99体作ったとする
作ってる最中にこの敵に変更を加えたくなってきたとする
例えばタグをEnemyに変えたいとか
そうするとこの場合だと100体全てを修正しないといけなくなる
一方プレハブから100体作った場合だと
プレハブ本体を修正するだけでシーン中の100体が修正される
とかね

275:THE・シンプル先生
18/08/02 14:50:49.16 MarJrTds.net
>>261
プレハブはクローンだと思えばいい。
本体(オリジナルとも言う)のコピー品さ。
利点は大量に画面に表示した時に処理落ち(スロー再生状態)になりづらい。
ワンピース海賊無双というゲームをパクって作った場合
プレハブを使って作ると同じ物が作れるが
プレハブを使わないで作ると処理落ちが激しく遊べる状態ではない。

276:名前は開発中のものです。
18/08/02 15:11:17.76 8NS2VTtG.net
>>262 >>263
レスありがとうございます。
directX、C++からUnityに乗り換えた者なんですが
プレハブってのは、
敵のクラスをインスタンスしたものだというイメージでいいんでしょうか?
それとも、敵のクラスを定義したもので
あとでシーンの中でプレハブをインスタンス化させるのでしょうか?

277:THE・シンプル先生
18/08/02 20:25:19.20 MarJrTds.net
>>264
敵味方関係なくあらゆるクラスをインスタンス化したものがフレハブという認識でOK。
作成タイミングは自由。
シーンの中で動的にプレハブを作成する事も可能。
エディット画面で事前にプレハブを作成して配置して置く事も可能。

278:名前は開発中のものです。
18/08/02 22:16:19.04 IKwT233P.net
>敵味方関係なくあらゆるクラスをインスタンス化したものがフレハブという認識でOK。
こんなに堂々と嘘をつく奴も珍しいなw
素直にマニュアル見とけよ
URLリンク(docs.unity3d.com)

279:名前は開発中のものです。
18/08/03 00:07:19.01 YqXFTdeb.net
クラスかインスタンスかの二択なら
クラスだろ

280:THE・シンプル先生
18/08/03 04:00:21.11 gwkzOX1I.net
>>266
説明に間違いなし。
名前の通り初心者にシンプルに説明するのが目的で細かい説明は全てカットしてる。
初心者には自信を持って
『敵味方関係なくあらゆるクラスをインスタンス化したものがフレハブという認識でOK』
この説明を推す。

281:THE・ステップアップ先生
18/08/03 04:11:45.63 gwkzOX1I.net
>>266-267
中級者以上の知識がある人達には
ゲームオブジェクト自体もクラスと説明すれば分かってもらえるかと。
ソースコード上で行うインスタンス生成を
Unity的な言葉に直したものがプレハブと呼ぶにすぎない。
相当細かく説明すると厳密には違うかもしれないけどね。

282:名前は開発中のものです。
18/08/03 07:25:47.78 UvI2T87H.net
Instantiateなんてもんがわざわざあのになんでインスタンスにこだわるん?
プログラミングの知識あるならシーンに設置したオブジェクトがインスタンスって方がわかりやすいぞ
シーン内に個別に設置(インスタンス)したオブジェクトの値を変更してもプレハブ(クラス)には影響がないが
プレハブ(クラス)の値を変更したら個別に設置(インスタンス)したものにも影響がある
インスタンスからクラスに無理やり影響を与えるのがApply

283:名前は開発中のものです。
18/08/03 07:26:59.37 /74BHbXn.net
ほーんじゃあプレハブからクローンしたゲームオブジェクトはなんなんですかね
あれこそインスタンスじゃないんですかね

284:名前は開発中のものです。
18/08/03 08:42:46.93 Z5jah2NB.net
プレハブはプレハブでいいじゃないか。いちいち既知の概念に置き換えないと理解できないの?

285:名前は開発中のものです。
18/08/03 08:57:39.72 8Qhd0PCF.net
再利用しやすくするものくらいの認識でいいんじゃね?

286:名前は開発中のものです。
18/08/03 09:13:10.67 Tb6IvIdd.net
博識のある方達は、やはり呼び名とか拘らないといけないんですね大変ですね。
私なんかは、インスタンスとか未だに理解していません、できてません。
ただスクリプトで複製したり、親子入れ替えたり消したり、ここに置いときゃいい、ぐらいの知識で十分作れてますから、初心者レベルは楽で良いですよ。

287:名前は開発中のものです。
18/08/03 09:29:06.72 Z5jah2NB.net
あえて言うとプレハブはインスタンスのスナップショットな。instntiateはクラスのインスタンス化とはまた違った仕組みだし。無理矢理他言語の経験持ち込まずに、素直にマニュアル読んだが利口。

288:名前は開発中のものです。
18/08/03


289:10:05:56.53 ID:Z5jah2NB.net



290:名前は開発中のものです。
18/08/03 10:12:09.26 Z5jah2NB.net
>>268
惜しい、インスタンスを保存したもの、だったら合格点。

291:名前は開発中のものです。
18/08/03 10:52:55.93 +s2o5GnK.net
盛り上がってますね。
プレファブはテンプレート化されたファイルですよ。
クラスをインスタンス化したものと言うのはメモリ展開されたクラスです。不正解。
プレファブはキャッシュされる前のファイルです。
まあ、キャッシュして書き換える事も出来ますが、どこぞのボッキングが、アセット書き変わった言って嘆いてましたんで、注意が必要です。

292:弟子
18/08/03 11:30:14.45 M8FCr8g3.net
ここ初心者用に建てたスレなんで議論とか他でやって

293:名前は開発中のものです。
18/08/03 11:58:41.31 udevAjot.net
初心者は議論なんかするなってか
そりゃ永遠に初心者やな

294:名前は開発中のものです。
18/08/03 13:15:54.04 +vZr26Ym.net
>>279
お前には自分で立てた専用スレがあんだろ。あ、ここもでしたね、失礼しました。

295:名前は開発中のものです。
18/08/03 13:27:05.32 +vZr26Ym.net
匿名かつ初心者ばっかりだからこそ出来る、このいい加減な議論。楽しいじゃないか。

296:名前は開発中のものです。
18/08/03 14:04:55.92 lMgrnDzV.net
まあ、弟子さんも十分初心者なんで、議論みて行って下さいな。
アレですよ?ここで、出てきたキーワード、分からなかったら、ググると良いですよ~

297:弟子
18/08/03 14:08:09.19 M8FCr8g3.net
スレチなマウンター共は
【質問以外なんでもOK】Unity雑談スレッドその1
スレリンク(gamedev板)
で遊んであげるからここにこないでね、迷惑だから

298:名前は開発中のものです。
18/08/03 14:10:34.37 KvMBRbxy.net
昨日からの酷い流れを見て感じたけど
初心者同士で馴れ合ってても百害あって一利なし
正しい知識を習得するのが大事
調べ物は公式マニュアル見る習慣を
最低限公式チュートリアルの初級(英語版)はやったほうがいい

299:名前は開発中のものです。
18/08/03 14:27:57.12 lMgrnDzV.net
紙パンチに興味持てんわ
285さんのは正論ですね。
でも超概要として、こういうやり合い見るのも有りじゃないすかね。
自分も知らない事結構出てくるし。

300:名前は開発中のものです。
18/08/03 15:13:38.43 euFxSDg2.net
ここはクソコテ弟子が初心者相手にマウント取るために立てたスレなんで
初心者以外が質問、回答すると通報されてしまいますよ。

301:名前は開発中のものです。
18/08/03 17:18:58.52 XE8vIJkM.net
決まったobjectの当たり判定内にいるかつボタンを押したときのスクリプトが組めません、、&&を使えばいいという知識でやったところコンパイルエラーが出てしまいました。名前の一致などは確認済みですこんなタイミングですが教えてもらえると助かります。、、

302:名前は開発中のものです。
18/08/03 17:26:14.84 Tb6IvIdd.net
エラー文とその行を貼れ。
まずはそれからだ。テンプレ

303:名前は開発中のものです。
18/08/03 17:32:30.72 XE8vIJkM.net
if (collision.gameobject.name == "Perfect")&& (Input.GetKeyDown(KeyCode.LeftShift));
{
Destroy(gameobject);
}
の部分です。エラーは多いんですが
・`UnityEngine.Collision' does not contain a definition for `gameobject' and no extension method `gameobject' of type `UnityEngine.Collision' could be found. Are you missing an assembly reference?
・Only assignment, call, increment, decrement, await, and new object expressions can be used as a statement
・The name `gameobject' does not exist in the current context です

304:名前は開発中のものです。
18/08/03 17:36:02.42 Tb6IvIdd.net
collision.gameobject.name をログ出力できるかやってみ?

305:名前は開発中のものです。
18/08/03 17:37:26.76 Tb6IvIdd.net
ちな、&&は全角じゃないよね?

306:名前は開発中のものです。
18/08/03 17:43:20.14 XE8vIJkM.net
ログ出力がなにかいまいちわかってなくて、、すみません。
&&は半角にしてもビジュアルスタジオ上で無効ですと書かれてしまいます

307:名前は開発中のものです。
18/08/03 17:52:35.95 y6ZFjsSR.net
Unityの「シリアライズ」というのは、インスペクタみたいなのに表示できるようにする為などに、データをUnity内部機構が読み込める独自様式に変換するという意味だろ
プレハブはあくまで型と初期値の定義であって、プレビュー時や実行時にシーンに生成されて初めてメモリ上に占有領域が確保されて情報が記憶される(メモリ上オブジェクトとしてインスタンス化される)
だからUnityプロジェクト中のヒエラル木も、厳密には型と初期値の定義でしかなく、インスタンス化されたメモリ上オブジェクトではない
Unityゲームオブジェクトやプレハブのインスタンス化は、Unity内部様式向けにシリアライズされた型と初期値の定義の情報に基づいて「デシリアライズ」することで行われる
あと日本語の解説ページは分かりにくい
さらにあと「スナップショット」は通常、システム全体の一時的状態を指すから、システムの構成要素(プレハブ)に使うのはニュアンスがずれてる

308:名前は開発中のものです。
18/08/03 17:53:09.72 s8alTO1O.net
>>293
if文の最後にセミコロンあるよね。
それをまず消してみて。

309:名前は開発中のものです。
18/08/03 17:54:46.53 XE8vIJkM.net
消しました。特に変化なしです

310:名前は開発中のものです。
18/08/03 17:56:40.41 s8alTO1O.net
>>294
俺もそれ思った。スナップショットだとvmを思い浮かべてしまうわ。
ストレージの技術感のが高いよな

311:名前は開発中のものです。
18/08/03 19:05:27.40 Tb6IvIdd.net
>>290
Debug.Log (collision.gameobject.name);
で、何が表示されるか?

312:名前は開発中のものです。
18/08/03 19:12:48.91 Tb6IvIdd.net
>>290
if( (collision.gameobject.name =="Perfect")&&(Input.GetKeyDown(KeyCode.LeftShift)))
{
Destroy(gameobject);
}
こうかな?

313:名前は開発中のものです。
18/08/03 20:24:49.31 XE8vIJkM.net
>>299 単純にDebug.Log (collision.gameobject.name); を空のスクリプトに打てばいいんすかね?
いただいたプログラム打ちましたが駄目でした、、一応全文載せてみます
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class judgePerfect : MonoBehaviour
{
void Update()
{
if ((collision.gameobject.name == "Perfect") && (Input.GetKeyDown(KeyCode.LeftShift)))
{
Destroy(gameobject);
}
}
}

314:名前は開発中のものです。
18/08/03 20:25:58.25 BofVo0Am.net
gameObjectじゃないの?

315:名前は開発中のものです。
18/08/03 20:28:13.30 Tb6IvIdd.net
>>300
>>>299 単純にDebug.Log (collision.gameobject.name); を空のスクリプトに打てばいいんすかね?
で、これで表示された内容は?

316:名前は開発中のものです。
18/08/03 20:33:47.70 Tb6IvIdd.net
>>301
これですね。

317:名前は開発中のものです。
18/08/03 20:38:06.67 XE8vIJkM.net
このプログラムに関する項目じゃないオブジェクトの詳細のようなものが追加されました

318:名前は開発中のものです。
18/08/03 20:46:54.61 BofVo0Am.net
collisionが唐突にでてきてるけど根本的に間違ってるんじゃね
OnCollisionEnterもつかってないし

319:名前は開発中のものです。
18/08/03 20:56:53.50 g4hffkLt.net
>>294
プレハブが型と初期値の定義なんてどこに書いてあるよwww日本語と英語には書いてないから、あとは俺が読めない韓国語か?
gameObjectとコンポーネントのSerialized dataだって書いてあんだろ。

320:名前は開発中のものです。
18/08/03 21:11:35.02 g4hffkLt.net
>>305
俺もそれ思った。

321:名前は開発中のものです。
18/08/03 21:13:54.44 y6ZFjsSR.net
ohiohiまた威勢のいい○○が沸いてきやがった
すぐ韓国とか言い出す糖質ッぷりには失笑を禁じえないな
>Serialized data
そのdataの中身は何なんだ?噛み砕いて言ってみろ、二等兵見習い

322:名前は開発中のものです。
18/08/03 21:57:13.


323:06 ID:g4hffkLt.net



324:名前は開発中のものです。
18/08/03 22:40:26.78 y6ZFjsSR.net
>ゲームオブジェクト
>コンポーネント
これらはとどのつまりはクラス。
クラスとは何か?

325:名前は開発中のものです。
18/08/03 23:17:18.29 5oCXpdg6.net
アプデしたらいつも調子悪くなる

326:名前は開発中のものです。
18/08/04 04:54:34.40 nYTIxyUA.net
基本的にゲームプログラミングでは
シーン内で生み出す敵とか大抵配列に入れ込んで管理しますよね?
for文でその配列の要素回して抜き出したり。
でもUnityの2Dシューティングとかのチュートリアルを確認してみると
次々と生み出された敵を配列に入れ込む処理が見当たりませんが
これ、個々のオブジェクトの把握はどうやってるんですか?

327:名前は開発中のものです。
18/08/04 05:19:51.58 uwGBYqQ5.net
>>310
なるほど、型か!ってなんねーよww
シリアライズって意味わかってんの?クラスを保存じゃなくてインスタンスを保存だろ。
ヒエラルキー上のインスタンス群をシリアライズして保存するんだから、どちみちハズレなのよ。

328:名前は開発中のものです。
18/08/04 06:49:36.83 jfygBgbK.net
おまえら日本語で話せよ

329:名前は開発中のものです。
18/08/04 07:35:21.25 uwGBYqQ5.net
>>312
7.2は読んだか?

330:名前は開発中のものです。
18/08/04 09:43:45.62 8h4ounWr.net
>>313
わかったわかった
お前の人生は大ハズレだな
インスタンスについて基本的な理解が不足してるぞ
ヒエラル木も結局は型定義と初期値に関するシリアライズされたデータの集まりで、プレビュー時や実行時に初めてインスタンス化されてるんだよ

331:名前は開発中のものです。
18/08/04 10:32:45.75 uwGBYqQ5.net
>>316
プレハブの話だよ、ヒエラルキーからゲームオブジェクトをドラッグしてプレハブ作成した時点でヒエラルキー上のはプレハブインスタンスになるだろ。
そしてプロジェクトビューのプレハブ自身はヒエラルキー上のプレハブインスタンスがデシリアライズされる前のデータ、プレハブソース。
このプレハブソースを型だったて言い張るのは無理があると言う話だ。だからどんな意味で型と言ってるか聞いたんだ。雛形って意味なら俺も納得。

332:名前は開発中のものです。
18/08/04 10:36:45.24 uwGBYqQ5.net
>>317
あ、ヒエラルキー上のプレハブインスタンスはソースと変更の参照でOOPで言うインスタンスじゃないのはわかってるから。

333:名前は開発中のものです。
18/08/04 10:41:25.18 uwGBYqQ5.net
>>317
>そしてプロジェクトビューのプレハブ自身はヒエラルキー上のプレハブインスタンスがデシリアライズされる前のデータ、プレハブソース。
ヒエラルキー上のプレハブインスタンスが、実行時やプレビュー時にデシアライズ、と付け加えとく

334:名前は開発中のものです。
18/08/04 10:55:45.37 8h4ounWr.net
>ヒエラル木
デバッグ時にはモニタできるから、「シリアライズされた初期値およびデバッグ実行時の現在値」という表現が良いのか
しかしなぜ「シリアライズ」という言葉を使うんだろうか
ヒエラル木を構成する連続した要素の一つに組み込むという意味なのか

335:名前は開発中のものです。
18/08/04 11:19:34.99 qIP9aSz0.net
>>320
お前ら何でプレファブの中身見て見ないの?
YAMLで書かれたファイルだって一発で分かるだろ、つまりシリアライズされて保存されてるファイルって事だよ。
一方ヒエラルキーに見えてるのもファイル。
再生実行した時だけ、メモリに展開されてる。
わかった?

336:名前は開発中のものです。
18/08/04 13:22:29.52 8h4ounWr.net
1000回日本語文章読んでもバカには無理w

337:名前は開発中のものです。
18/08/04 13:36:44.18 ASd5/j6X.net
>>321
へー、ヒエラルキーに表示されているのはシーン上のオブジェクトのリストじゃなくてファイルなんだぁ。
ファイルシステムのどこにそのファイルがありますか?またシーンビューで編集しているときはメモリ上にはなくてディスク上にあるんですか?
公式のマニュアルとは違う説明で混乱しそうです。

338:名前は開発中のものです。
18/08/04 13:52:20.56 qIP9aSz0.net
>>323
右上のケバDebugにするとLocalIdentifierInfileってでてくんだろ。
隠蔽されてるが、あるんだよ。それアクセスされると色々ぶっこわれるからな。

339:弟子
18/08/04 13:55:14.77 +VI6JuUR.net
初心者スレでマウント取りたいのは分かるから巣に帰って
ちゃんと新しいの作ったからさ
【3Dゲームエンジン】Unity質問スレッド37
スレリンク(gamedev板)

340:名前は開発中のものです。
18/08/04 14:04:46.49 qIP9aSz0.net
初心者に分かるように言ってんじゃん。
紙パンツスレ飽きちゃったんか?あっちで吠えてろよ

341:名前は開発中のものです。
18/08/04 14:29:50.67 jfygBgbK.net
おまえらの話は誰にも通じてないし役にもたってないぞ

342:弟子
18/08/04 14:41:43.17 +VI6JuUR.net
>>326
YAMLとは?
シリアライズとは?
ケバdeaugとは?
初心者なんでまったく訳わかんないですわ

343:名前は開発中のものです。
18/08/04 14:43:13.78 yHEIRFFR.net
>>324
それってシーンファイルに書いてある識別IDじゃない。んでシーンを保存するまで0だよ。保存する前のヒエラルキーはどう説明するのさ。

344:名前は開発中のものです。
18/08/04 14:45:18.52 yHEIRFFR.net
>>328
初心者スレで聞いてみれば。

345:名前は開発中のものです。
18/08/04 14:50:04.55 cpg8UDOV.net
>>328
知らなくても作れるけどな。

346:名前は開発中のものです。
18/08/04 15:05:56.25 qIP9aSz0.net
>>329
Editorがシーン用にDBを構築してるって事なんだよ。隠蔽って書いただろ。
シーンの中見たなら、ある程度シリアライズされてる内容見えただろ。でも全てじゃないのは分かったはずだ。
未保存がメモリで動く訳ないだろ。実行前に必ず保存されてるわ。
保存前のヒエラルキーは見た目だよ、ドラフト扱いな。
もう少しEditorとUnityEngineの違い分かった方がいいな。

347:THE・シンプル先生
18/08/04 15:07:18.36 KOItUBKr.net
>>312
自分で工夫する事で昔の「main()ループ」に近い物が作れる。
①:空のゲームオブジェクト(Empty)を適当な位置に作る。名前は仮に"GameMain"としておく。
②:次に適当な場所に"GameMain.cs"と仮の名前でC#スクリプトを作る。
③:②を①にアタッチ
④:②の中にprivate属性などGameObject型の動的配列の"元だけ"を宣言 → 例:GameObject[] Enemy;
⑤:②の"start()"などで実際に必要な数の配列を作成 → 例:Enemy = new GameObject[3];
⑥:"GameObject.Find("※オブジェクト名").gameObjectを使い、先程作成した配列にシーン上のGameObjectを関連付けていく → 例:GameObject[0] = GameObject.Find("Enemy0").gameObject;
⑦:後はGameObject[0]を使う
当然他のやり方も無数にある。

348:THE・ステップアップ先生
18/08/04 15:19:06.70 KOItUBKr.net
>>312
次の内容はおまけなので意味不明な場合は気にしなくていいよ。
ソース上でのオブジェクトの管理のしやすさはメモリー使用量に反比例する。
今までのやり方(main()ループのやり方)だと扱いたいオブジェクトを最初に配列に全て格納するのでそれだけ沢山メモリーを占有し続けることになる。
旧型のゲームを作る場合はこのやり方でも問題ないし今でもこっちの方が扱いやすい場面が多々ある。
とくに小規模ゲームの場合はこっちのやり方で全然いいと思う。
じゃあUnityがこの古き「main()ループ」のやり方になっていないのは何故かというと
中~大規模のゲーム作成も想定して作られてるのもあると思う。
この規模になると次の事を実現しないといけない。
・必要な場面にだけメモリだけを使いこまめに確保と解放を繰り返す節約型モデル
・もともと非常に重い3D物理演算を実用レベルで運用する
・もともと複雑で重い3Dの当たり判定処理(コリジョン)をプログラマが手軽に扱えるようにする
これの実現でメモリー制約の厳しいスマホで苦労せずに3Dゲームを作れたり
MMOやオープンワールド系のゲームを作れるポテンシャルを実現している。
FCマリオやテトリス作るなら"main()ループ型"でいいけど、モンスターハンター作るなら"main()ループ型"では死ねるよという感じ。
実際に何かを作ってみると分かるが当たり判定(コリジョン)は"main()ループ型"で回して中でいちいち判定するより
オブジェクト1つ1つにC#スクリプト埋め込んで当たった時に勝手に「当たったよ!」とイベント通知してきてくれる方が100%楽。
余談だが、UnityやVisualStudioのようなGUIでモデルを配置できるエディッタ時代ではなく、コマンドプロンプト時代のCUI時代にソースで扱っていたクラスのカプセルの概念、あれをビジュアル的にも再現できている今のUnityのモデルだとも感じてる。
今のUnityのやり方が、昔に目指されていたオブジェクト指向プログラミングの1つの完成形・理想形なんじゃないかと思う。
アセットの概念なんかはまさにオブジェクト指向プログラミングのカプセル可の恩賜だと思うよ。

349:弟子
18/08/04 16:23:58.28 +VI6JuUR.net
>>330
それはどこですか?
誘導お願いします 
ここは、そういうスレなので教えてください

350:名前は開発中のものです。
18/08/04 16:28:00.38 qIP9aSz0.net
>>335
ほらよ、君にうってつけだ
スレリンク(gamedev板)

351:名前は開発中のものです。
18/08/04 17:03:05.01 u4pCimN6.net
>>332
>>329
>Editorがシーン用にDBを構築してるって事なんだよ。隠蔽って書いただろ。
>シーンの中見たなら、ある程度シリアライズされてる内容見えただろ。でも全てじゃないのは分かったはずだ。
ヒエラルキーの表示じゃなくて、ヒエラルキーに表示されている、シーン上のオブジェクトの話をしてたつもりなんですけど。
>未保存がメモリで動く訳ないだろ。実行前に必ず保存されてるわ。
未保存のときもlocal identfierfile 0のままシーンビューやヒエラルキービューで編集出来ますけど、そのオブジェクトはメモリ上じゃなくてどこで動いてるんですか?

352:名前は開発中のものです。
18/08/04 17:27:38.46 qIP9aSz0.net
>>337
シーン情報はシーンにある。プレファブ情報はプレファブファイルにある。
てか見たんだろ?ファイルにあるわ。
もちろん画面に表示したり、編集させるにはメモリを使ってる。だけど電源オフったら消える通りストックはされておらん。
編集はできとるが、これがそのまま再生実行時に使われると思ってるところがあんたが嵌ってるところだ。
新規作成したらEditor用のメモリに展開はされる。
だけど電源オフったら消える通りストックはされておらん。
未保存データは再生実行時には使われておらん。
再生実行時に保存データを使ってEditor用のメモリに一旦展開する。これがデシリアライズな。
分かった?

353:名前は開発中のものです。
18/08/04 18:23:45.38 bPWDdaDo.net
>>338
誰か再生実行時の話してましたっけ?プレハブを作る場面の話だったと思いますけど。
ヒエラル木とか言ってる人に合わせて、ヒエラルキー上にリストされているシーン上のオブジェクトの事を指して、またはオブジェクトの階層構造自体の事をヒエラルキーって言ってたのが悪かったかな。
ヒエラルキーのリストは確かにファイル。
んで、編集中にプレハブを作りました。そのプレハブをシーン上に配置しました。シーン上に配置した時点でオブジェクト化されたんじゃないかと思うのですが、このときはプレハブソースからのデシリアライズは起きないのですか?

354:名前は開発中のものです。
18/08/04 18:30:26.82 sBxajZWZ.net
playerキャラとかNPCキャラとか複数のオブジェクトで使い回すような自作関数ってそれぞれにアタッチしてるスクリプトに書く?それとも1つ関数をまとめたオブジェクトを作ってそこに書いておいてその都度それぞれが参照する感じのほうがいいですか?
例えばオブジェクトの現在の座標とか着地判定を取得する関数とか

355:名前は開発中のものです。
18/08/04 19:26:52.87 qIP9aSz0.net
>>339
インスタンス化とデシリアライズの話が出たから、そのタイミングである再生実行の話をしただけで、いきなり誰かしたかと言うのはおかしい話。
プレハブから配置したのは、あくまでEditor上でシーン情報を作っただけで、デシリアライズは再生の時に起きるっての分かる為なんだが
まあ、ちょっとデシリアライズを誤解してるってか、話がどんどん逸れそうだからな。行間読むわ
多分言いたいのは、プレハブをシーンに置いた時に、プレハブ情報からシーン情報が構築されないのか?って言いたいんだろう。
一旦Editorのメモリ上では構築される。
そんで、再生や保存で、その時に当然Dirtyな置かれたオブジェクトがファイルに保存される。
再生の初期にシーンファイルを読み込んで、デシリアライズしてメモリ展開する。
オブジェクト化は再生の初期やInstantiateの時に起こる。これをインスタンス化と呼ぶ。
じゃあ、エディタで見えてるのは何なの?って言うと、編集のためにファイルをエディタ用のメモリに展開してるだけ。
最初にプレハブを置く=テンプレートからのエディタ用メモリへのコピー
保存=シーン情報の構築
ヒエラルキー=再生時のメモリ構築用データ
と思えば良い。
まだダメかな?いい加減疲れてきたぞ。をい

356:名前は開発中のものです。
18/08/04 19:33:40.98 qIP9aSz0.net
>>340
人それぞれかな。
俺の場合は、それぞれにアタッチしてる。だが種類は極小でなるべく余計な物はアタッチしないって方針
一個だけアタッチするなら、代表するオブジェクトに持たせたり、シングルトン使ってそいつにコンポーネント生やしたりもする。
シングルスレッドならUnirx辺りを使ってアタッチしないで生やしたりもできる。
それぞれ一長一短だから全部やってみるとええ。

357:名前は開発中のものです。
18/08/04 20:34:14.45 Ter6X2ca.net
>>340
良いか悪いか。
仕様に基づいて、一番最適な設計を行って実装するのがプログラマだから、察するに現時点の貴方のレベルからすると、342さんも言ってるように、とにかく実装経験を積むことが近道になると思う。

358:名前は開発中のものです。
18/08/04 20:47:00.20 s81iLtQ9.net
>>341
でもさ、公式のマニュアルに
URLリンク(docs.unity3d.com)
単に、プレハブアセットをプロジェクトビューからシーンビューにドラッグするだけで、プレハブのインスタンスを作成します。
プレハブのインスタンスとして作成されたオブジェクトは、ヒエラルキービューで青色の文字として表示されます(通常のオブジェクトは黒の文字で表示されます)。
て書いてあるのよ。
プレハブはシアライズされたファイルで、そのシリアライズされたファイルからインスタンスを作成するんだからデシアライズじゃないの?Unityではデシアライズとよばないの?

359:弟子
18/08/04 23:08:11.76 +VI6JuUR.net
>>336
君はスレタイ読めないのかな?

360:弟子
18/08/04 23:10:17.86 +VI6JuUR.net
>>344
呼び方とかどうでもいいのよ、動けば
議論したいなら他行くか、自分でスレ建ててそっちでやってね

361:名前は開発中のものです。
18/08/05 00:07:41.56 iaL/bkNc.net
弟子realize

低能特有の神経質な悪臭が半端ないな
なんなんだこのゴミ

362:弟子
18/08/05 00:15:41.23 9xb2C49y.net
>>347
そのゴミが建てたスレに来て何言ってんの

363:312
18/08/05 01:31:28.80 CyFJgm7j.net
>>334
とても勉強になる回答内容に感激しました。
私はその昔ながらのmain()ループのやり方で生きて来たクチなので
Unityのマニュアルやチュートリアルに目を通し(熟読はしていませんが、
非常に困惑しているところだったんです。
ステップアップ先生の話を聞いた限り、仮にUnityでFCマリオを制作するとしても、
昔ながらのmain()ループのやり方をUnityで実行するより、
本来はUnityモデルを覚えて作った方が"ラク"だよ、ということですよね?
例えば当たり判定&#12316;のくだりは確かにそっちの方が確実にラクなのが理解できますし。
それとも「いや、FCマリオくらいのゲームしか作る気ないなら、
この先Unityを覚えて制作せずとも、>>333のUnityの中で擬似main()ループで作る方が断然ラクだよ」とかですか?
というのもmain()ループのやり方が染み付いてしまっている私自体、
ゲームの処理には中心となるがループを置いて、
そこからすべての流れを構想してしまうオツムなんです。
Unityモデルは全オブジェクトが個々で処理され、バラバラに存在している感じ?というか
各オブジェクトや処理に非常にふあふあしていると感じました。
もちろん自分のUnity理解度がまだ足りないせいなのは重々承知してますが
アセットやツールで解決するそれぞれの処理がブラックボックスすぎて、
初心者としてはそれらの応用が難しい。
アニメーション描画も、正直配列に各画像を入れ込んでフレームで回す方がラクなのに、
AnimationEventを使ってメモリを動かしてイベントの制作をしなければならない?のも余計ややこしく感じます。
結局、ソースだけで解決できないエンジンなので例えFCマリオであっても
Unityを覚えないと作れないことにちょっと面食らっています。
それらもステップアップ先生のおっしゃる通り
3Dや中~大規模のゲーム作成も想定されたUnityだからこその仕様なのだと理解しましたが
どうなんでしょうか、私が2Dオンリーのゲーム制作目的であっても
Unityモデルで制作方法を覚えた方があとあと必ずラクになりますか?
変な相談ですみません。

364:まあ、人それぞれやな先生
18/08/05 02:07:48.11 bE8Y0pws.net
まあ、人それぞれやな

365:名前は開発中のものです。
18/08/05 03:32:42.76 IZ2haYgx.net
自分のやり方でやってみれば
unityでも十分できると思うよ
一元管理のほうがコード書きやすいし
チュートリアルみたいなコードは手練れてないと無理じゃね

366:THE・ステップアップ先生
18/08/05 04:35:33.53 PSh59YKG.net
>>349
mainループ式は、シングルスレッドとかシングルタスク的な動きを連想させるけど
Unity式は、マルチスレッドとかマルチタスクとか非同期的みたいな動きだから慣れていないと取っつきにくいだろうね。
どちらかというと、Webのサーバークライアントプログラムの扱いに似てるかもね。
これは慣れだよ。
最初は四苦八苦かもしれないけど
旧式でもゲームを作れる技量があるのなら、触っている内に必ず非同期的な作りにも慣れる。
慣れるとメリットの多さに気づける。
Unity式のやり方を覚えた方が絶対に得だよ。
作れる物の幅も広がるしステップアップに繋がる。
そしてソースが非常に簡略化する時が多い。
例えば動きを実現するのにmainループ型では30行必要だった処理が1行で済むなんてこともあるよ。
最初から全てをUnity式のやり方にする必要はなくて
慣れてるmainループ式で作り、Unity式にしたほうが便利そうな部分だけそっちにする感じでいいんじゃないかな?
実際のゲーム作りも、ほとんどが「main()ループ式 + Unity式のハイブリット型」になると思う。
main()ループ式だけとか、Unity式だけという作りにはならないと思うよ。
他の人はどうなのかは知らないけど自分の場合は必ずゲーム全体を管理するmainループ的なスクリプトが存在するよ。
mainループはゲーム全体の状態をコントロール(ゲーム中なのか?ゲームオーバーなのか?などの状態)したり、
ラジコンを動かすプロポ代わりとなり、各GameObjectに実装した関数へ「待機」とか「アクションAの動きを実行せよ」とか指示をだして操作してるようなイメージ。
各GameObjectには渡された引数で色々な動作をするように記述したC#スクリプトをアタッチさせておき、指示を受けて動くロボット的なイメージ。
人によっては"GameMain"に相当する部分を"GameMgr(ゲームマネージャー)"みたいな名称にしてるかもね。

367:名前は開発中のものです。
18/08/05 07:32:27.22 7w+AZmvn.net
>>346
俺には初心者がそれなりにマニュアル読みつつ、独自解釈のエラそうな知ったかを追い出そうとしてるように見えるけど?

368:名前は開発中のものです。
18/08/05 09:16:54.78 1CW9jcvb.net
さすがお盆休みだなぁ。

369:名前は開発中のものです。
18/08/05 09:22:07.75 1CW9jcvb.net
>>348
初心者スレなんていう公共的なスレタイ付けといて言うセリフじゃないぞ。個人的なスレにしたいならもっとスレタイ考えろ。
初心者スレはお前が立てなくてももっと普通の奴が立てるからでしゃばんな。

370:弟子
18/08/05 11:17:58.00 9xb2C49y.net
>>355
夏やなぁ
通常質問スレが36間でいっても初心者スレ建たなかったんだよなぁ

371:名前は開発中のものです。
18/08/05 11:56:29.79 s2ZX6Afg.net
ネトゲじゃないんだから雑談や初心者質問スレなんか需要無いんだよ。
次は復帰者スレでも建てるの?

372:名前は開発中のものです。
18/08/05 15:59:20.45 Zg/i6Juh.net
ヘックスマップ作りたいんだけど
こういうマップチップてプレハブ並べて作るの?

373:312
18/08/05 16:09:57.60 CyFJgm7j.net
>>352
昔ながらのゲーム制作方法を交えてアドバイスして頂けること
非常にわかりやすく助かります。ありがたいです。
そのため、どうしてもこの機会にアドバイスを受けたいのですが
シンプルに説明しますと、私のやってきたことは
ゲームマネージャーを作り、そこですべてを把握させ、
各オブジェクトは属性を振り、配列に入れ、属性同士でコリジョン判定。
真になった場合に相手を見てそれぞれの処理をする
(厳密には、プレイヤーなどは専用にコリジョン判定を回したり)。
各マップチップとの判定も同じで、ブロックごとに属性を振り配列に入れ込んで判定します。
シーン遷移についてもシーンマネージャーを作り、マネージャーより命令がくれば指定のシーンに飛ぶ、それだけです。
サウンドもシーン遷移の要領でサウンドマネージャーを作り、命令がくれば切り替える感じです(SEは各オブジェクト内で鳴らします)。
もちろんこれらはご存知かと思いますが、ソースは多かれどこんなシンプルなものでしたので
今はUnityの方が面倒に感じて、参っております。
理解度が低いのはもちろん、ご指摘を受け、全部Unityのやり方でやろうとしていたせいだと思いますし、
確認してみたチュートリアルが昔ながらの作成方法では無い説明ばかりなのも弊害のひとつですし、
あとネットで探す場合3Dの方の情報とこんがらがっているのも弊害といえます。
私の様な時代錯誤なゲーム制作者が、初Unityで試しにFCマリオみたいな
2Dアクションゲーム(もちろん簡単なレベルに落とします)を制作してみるとして、
どこの処理を「Unity式のハイブリット型」を選ぶのがベターなんでしょうか。
古きも新しきも理解し、両方の比較ができるステップアップ先生
どうか教えて頂けませんでしょうか。

374:名前は開発中のものです。
18/08/05 19:46:20.43 HJil90QJ.net
オープンワールド的な大きなterrainにするために(見えるように)キャラとかオブジェクトのScaleを0.1にするとかお前ら的にはアリ?ナシ?
terrain分割系のアセット使うのは無しの方向で
terrain自体のサイズは実質2000x2000くらいが限界なんだよなぁ

375:名前は開発中のものです。
18/08/05 22:20:17.60 1CW9jcvb.net
何ここ、壮大な自演スレ?

376:弟子
18/08/05 22:41:53.80 9xb2C49y.net
>>361
そだよ
だから、でしゃばんな

377:弟子
18/08/05 23:12:55.61 9xb2C49y.net
>>358
六角形のスプライト用意してタイルマップでいけるんじゃないかな

378:名前は開発中のものです。
18/08/05 23:27:14.09 vRj4lIfD.net
>>358
この質問お願いします

379:名前は開発中のものです。
18/08/05 23:28:36.82 UInf7wuX.net
>>358
アセットがあればヘックスマップも作れると思いますよ

380:名前は開発中のものです。
18/08/06 01:10:06.69 shQcteCQ.net
>>363
>>365
ありがとう
調べてみます

381:弟子
18/08/06 01:30:05.16 b1K9g2Lf.net
>>366
最新のUnityになってからかどうかわかりませんが
自分のUnity2018.2.2f1の環境だと、2D ObjectにHexagonal TileMap
というのがあって
こんな感じ
URLリンク(i.gyazo.com)
URLリンク(i.gyazo.com)
ちょっと配置しただけなので隙間とかあるけど、調整すればいけるんじゃないかな

382:THE・ステップアップ先生
18/08/06 05:22:26.33 rSQN2TxT.net
>>359
説明を見てる限りだと結構Unity式で出来てるように感じるよ?
"属性"の部分を"レイヤー機能"に置き換えれそうなくらいじゃないかな。
既にレイヤー機能を使っているようなら気にしないでくださいな。
自分もUnity式はまだまだ発展途上であり完璧に理解してるわけではありませんよ。
またそれが面白いのです。
FCマリオを作るとしたら自分は以下をUnity式でやると思います
・当たり判定全般はUnityのコライダーとレイヤー機能に任せる(プレイヤー⇔マップ、プレイヤー⇔アイテム、プレイヤー⇔敵、敵⇔敵、敵⇔マップ)
・Sceneファイル1つにつき1ステージとファイルを分けて、ステージ遷移はSceneファイルの変更で行いたい
・Unityエディッタ上で直接マップ構成や敵の配置をやってしまい、別途BGエディッター見たいなものを使用しない
・つまりmainループ式だと行う必要があった背景などの画面スクロール処理は一切不要。カメラ移動に任せる。
これ以外はmainループ式でやるかな?
当たり判定部分は物理エンジンを使うか否かで多少変わってくるかもです。
実際に作ってみるとこのように行かない場面も多々出てくるかもしれませんが。
うまくまとめればUnityエディッタ=ちょっと複雑なマリオメーカー的な気分で作れちゃうかもしれませんね。

383:名前は開発中のものです。
18/08/06 07:24:48.60 kCqrej/c.net
画像付きで解説優しい!
2018.2にアップデートしたらヘックスタイルマップが追加されました
物凄くタイミングが良かった
ありがとうございます!

384:名前は開発中のものです。
18/08/06 20:49:47.90 elMC6huJ.net
>>359
横からだが、俺自身も昔ながらのゲーム開発からUnity開発へ移行した口だけど、結局のところ昔ながらのことをしないとパフォーマンス稼げないことが多々出てくるから、どっちのやり方も知っていいとこ取りをするのがベストだと思っている
あとチュートリアルはお作法というより機能や出来ることの説明がメインだから、設計という意味ではあまり参考にならないかと

385:名前は開発中のものです。
18/08/06 23:48:58.31 pjnXk9Sd.net
>>368
ありがとうございます!
モチベーションが上がって来ました。
それを参考に私も頑張ってみます。
>>370
>機能や出来ることの説明がメインだから
そうなんですよ、Unityモデルでの昔ながらの作成方法な
設計の参考になるものが皆無なんで、困ってます。

386:名前は開発中のものです。
18/08/07 05:33:02.72 qUQ4iHYs.net
シーンに空のオブジェクト置いてfixedupdateを
mainループとみなしてそこからすべて操作するだけ

387:名前は開発中のものです。
18/08/07 07:23:29.46 7twjrWhc.net
unityでそのままの方法でできるんだから悩む必要ないぞ
スクリプトをプレイヤーにつけるか敵につけるか空のオブジェクトにつけるかの違いだから
チュートリアルみたいに分散させるとどこに書いたかわからなくなって混乱の元になるし
一箇所に集めて配列管理でいいんじゃね

388:名前は開発中のものです。
18/08/07 11:30:26.00 fUL+ini3.net
エディタ拡張やってる人いますか?
inspectorに何かを表示したりそこにオブジェクトを生成するような簡単な処理はできるようになったんだけど、そこから先のやり方が全くわからない
例えば、既存のterrainの上部のボタンみたいなものを作って独自の機能を自作したりシーン上でクリック等の操作をできるようにしたりする方法教えてください

389:名前は開発中のものです。
18/08/07 15:03:44.07 XJ39evIU.net
>>374
URLリンク(anchan828.github.io)

390:名前は開発中のものです。
18/08/07 15:17:47.36 XJ39evIU.net
>>374
スマホだとわかりにくいけど、目次からweb版(無料)が見られるよ。探せなければpcで。それだけできてるなら6.10、17.2あたり見ればヒントになると思うよ。

391:名前は開発中のものです。
18/08/07 17:12:34.80 fUL+ini3.net
>>37


392:6 ありがとう ボタン設置やハンドルの表示は分かるんだけど、例えばシーン上のどこかをクリックしたらその座標にオブジェクトを生成するとして、それだけなら出来るんだけど他のオブジェクトをクリックしたときに、そのオブジェクトを選択したことになってしまうんです terrainで編集中だとシーン上で他のオブジェクトをクリックしたとしても、そのオブジェクトが選択されたりしないよね? まずは、シーン上でオブジェクトをクリックしても選択しないようにしたい 単純に「シーン上でオブジェクトを選択不可にする方法」ってのはぐぐったら出てきたんだけど、スクリプト込の記事がないんだよね あとは、例えばterrainならterrainDataいじってterrainの新しい機能を作りたいと思ってるんですけどね



393:名前は開発中のものです。
18/08/07 19:10:53.89 qu27Ep4Q.net
URLリンク(i.imgur.com)
URLリンク(i.imgur.com)
URLリンク(i.imgur.com)
URLリンク(i.imgur.com)
ど素人質問&画像直撮りですみません
マウスクリックでスプライトのアニメーションを変えるスクリプトらしいんですがイマイチよく分かりません
一番最初、「Animator」で記述すると「」がc#では使えないと出たり
その横のanimeDataが「フィールド'PlayerMove.animeData'は割り当てられません」と出ます
初歩的なことで申し訳ないのですが教えていただきたいです

394:名前は開発中のものです。
18/08/07 20:07:03.30 iOrv/KJ+.net
>>378
解説本はその解説本が対応しているバージョンのUnityで行いましょう

395:弟子
18/08/07 20:21:33.60 3KKwqbLg.net
>>378
一番最初というと
[SerializeField]「Animator」 animeData;
という部分ですね
恐らくで申し訳ないがこれは
animeDataというAnimator型の変数を定義していると思うので
[SerializeField]
Animator animeData;
でいいかと思います
その次のfloat定義も
float minPoint = -2; てなってますし。

396:名前は開発中のものです。
18/08/07 20:32:48.91 4Dd8RRWT.net
>>372
すみません、空オブジェクトのUpdateでは無く、
FixedUpdateである方が良い理由を教えてください。

397:名前は開発中のものです。
18/08/07 21:09:14.11 qu27Ep4Q.net
>>379
>>380
回答ありがとうございます
参考にしつつ手順の漏れがないか最初からやり直してみます

398:名前は開発中のものです。
18/08/07 21:19:26.85 7twjrWhc.net
[SerializeField]ってことはインスペクタでanimeDataを指定しないといけない
たぶんぴーたんをドラッグドロップするんだろう

399:名前は開発中のものです。
18/08/07 21:33:22.06 iXlByqKN.net
>>381
フレームレート60に設定するとfixedupdateは秒間60回呼ばれる
updateは何回呼ばれるか決まってない
昔のゲームプログラムはフレームレート固定だったので
昔風に書くならfixedupdateがおすすめ

400:名前は開発中のものです。
18/08/07 21:55:56.43 iXlByqKN.net
>>381
URLリンク(youtu.be)
この動画を見るとfixedupdateがよくわかる

401:名前は開発中のものです。
18/08/07 21:57:34.60 XJ39evIU.net
>>381
大体固定だからじゃない?でも多分両方必要だとおもうよ。

402:名前は開発中のものです。
18/08/07 23:36:06.98 0e3nA05E.net
>>384
でも、描画フレームとは同期できないから使い勝手悪いぞ
素直にUpdate使う方が楽

403:名前は開発中のものです。
18/08/07 23:41:08.87 0e3nA05E.net
>>384
もうひとつ付け加えると、FixedUpdateはスレッドで動いてるわけじゃないから、Update(描画フレーム)が処理落ちすると、1フレームに複数回呼ばれるし、その逆もまたしかりなので、結構めんどくさいよ

404:名前は開発中のものです。
18/08/07 23:56:38.80 FHXvAGCS.net
>>381
Updateで昔ながらの60fpsをやるなら、まずコードのどこかでApplication.targetFrameRateに60を設定する
メニューからQuality SettingsのVSync CountをDon’t Syncにする
同じくメニューからTime ManagerのMaximum Allowed Timestepを1/60にする
これで�


405:ルぼほぼUpdateが60fpsになるはず



406:名前は開発中のものです。
18/08/08 04:20:11.17 ROW+RPaT.net
>>387 >>388
え、、、じゃあUpdateの方がいいんですかね
fixedupdateはPhysics(Physics2D)系以外を呼ぶなって書いてもありました。
>>389
じゃあUpdateの方がいいんですかね
どうすればいいのか頭が混乱してます。
とりあえず、作ってみないと、、
簡単なものから組み立ててみます。

407:名前は開発中のものです。
18/08/08 05:50:12.43 NV2Fm/zi.net
unityでこれって正解はそうそうないからな
みんな自分がうまく行く方法を教えるから意見がぶつかり合う
んで一番割りを食うのはそれを見て学ぶ初心者ってことだなw

408:名前は開発中のものです。
18/08/08 06:49:31.17 tYWBz4xV.net
専門学校でゲームプログラムやってて、卒業後から最近まで業務システムやってたって人がいるんだけど、昔ゲームプログラムやった人はUnityは結構混乱するらしいな。
そのおっさんはゲームと思わない事がコツとか言ってる。
Unityでやるなら昔の事は忘れた方がいいみたいな気がするわ。

409:名前は開発中のものです。
18/08/08 07:13:12.39 Fn8D11Bz.net
Unityがデフォで提供する可変フレームレートの仕組みのところで、そんなにやり方が分散するとは思えんな
URLリンク(docs.unity3d.com)
↑ここの下の方の流れ図を見てみ
FixUpdateはUpdateよりも実行される頻度が多い(FixUpdateの所で矢印がぐるぐる回っている)
Updateは描画(Rendering)前に呼ばれる
Updateには描画時のみに必要な処理を書く。つまり、描画コマ落ち時には呼ばなくても良い処理を書く。例えば条件に応じて色合いを変えたりとか。
Updateが固定フレームで呼ばれるようにするのは愚の骨頂だぜ
公式が何のためにわざわざUpdateを分離してくれたと思ってるんだw
>>392
上のWebページの図の流れは、FixedUpdateがフレーム当たり何回も呼ばれる所以外、昔からのゲームの流れそのものなんだが

410:名前は開発中のものです。
18/08/08 07:13:57.49 Fn8D11Bz.net
×FixUpdate
○FixedUpdate
><

411:名前は開発中のものです。
18/08/08 07:28:28.35 tYWBz4xV.net
>>393
やだなぁ、そんなに上から目線で言わなくても、俺よりみんなの方が出来る人達なのはわかってるって。
昔ながらだと、メモリ配置どうなってんの?から始まるみたいだし。

412:名前は開発中のものです。
18/08/08 07:41:24.90 dtdVOklI.net
393が言ってる通り、updateら辺はお決まりだべさ
updateの頻度に関してはupdateのが多い場合がある、ってか、60fps行ってたら、デフォのfixed updateより遥かに頻度は高い。
問題は用法で、 updateはベストエフォートで実施されるから時間が適当。
例えフレームレート固定にしても、結構適当で1秒辺り処理される回数も結構適当。
一方fixed updateはバチっと固定秒を監視してるから固定秒間隔で実施出来る。んで、一秒辺りに処理される回数は決まってる。
1秒辺り何回やっても良い事務処理は updateで。
1秒辺り変化して欲しい量の加算や力の積み上げに関する処理はfixed updateでやると正確な回数処理されるって所かな。まあ、addforceとpositionの加算はfixed updateでやっとけばok

413:名前は開発中のものです。
18/08/08 09:45:47.13 IIyUr7UN.net
>>396
嘘教えるなって!
Updateの処理が重いとfixedUpdateは待たされるから固定秒間隔なんかで来ない
じゃあ、fixedUpdateがなんのためにあるかっていったら物理演算のためだよ
Unityに入ってる物理エンジンはある時点でのスナップショットで判定してるから経過時間が等間隔じゃないと正しく判定できないから擬似的にその状況を作ってくれてるだけ

414:名前は開発中のものです。
18/08/08 10:38:49.37 ROW+RPaT.net
うおおおおおおおおおおおおおおおおお
、、、結局、誰の認識が正しいのですか!?

415:名前は開発中のものです。
18/08/08 10:42:47.13 aE2PPNXc.net
>>397
俺ら初心者スレの猛者達がFixedUpdateを遅らせるような事する訳ないだろ。

416:名前は開発中のものです。
18/08/08 10:52:05.94 sLCgEPxI.net
>>398
固定フレームレートでやりたいなら、自分で時間見てやりなさい、ってとこかな。Unity公式で紹介されてたなんかの弾幕ゲーはそうやってたよ。

417:名前は開発中のものです。
18/08/08 11:02:40.16 GGilygSJ.net
>>398
知識披露したいだけの奴らだから無視してればいい
バグがでて必要になったら覚えりゃいいだけ

418:名前は開発中のものです。
18/08/08 11:20:11.17 IIyUr7UN.net
>>399
実際にUpdateが処理落ちしてるときにFixedUpdateが呼ばれる間隔を計測してみ
等間隔なんかで来てないから
あと余談だけど、昔のゲームはVシンクに同期して作ってるのが多いから処理落ちするとスローモーションみたいになるけど、FixedUpdateだとフレームスキップしたようになる

419:名前は開発中のものです。
18/08/08 11:54:42.55 kbto8gV2.net
>>398
手っ取り早く、>>389でいいよ。
他のやり方は、他の仕様との兼ね合いとか考慮する事もあるので。

420:弟子
18/08/08 11:56:20.94 3sTNJ/OU.net
>>398
習うより慣れろ精神で、まず作りましょ
んで何か不具合、またわからないことが出てきたら、具体的に聴けばいいかと

421:名前は開発中のものです。
18/08/08 12:01:33.22 u0RnB40v.net
操作に対して移動を優先するか
遅くしてもグラフィックを描画するかはゲームの設計思想の問題
どっちが正解とかない

422:名前は開発中のものです。
18/08/09 08:13:03.25 e+UL/kpA.net
この方の最新ツイート(8/8付)動画の40秒以降のぐるぐる回りながら形が戻っていく動き、どうやって作るんですか?
URLリンク(twitter.com)
(deleted an unsolicited ad)

423:名前は開発中のものです。
18/08/09 08:34:57.79 3chL1kmW.net
>>406
パーティクルで、発生位置がメッシュかな。パーティクルはオブジェクトな。
透明なスキンメッシュのオブジェクトがアニメしてて、メッシュの頂点から発生させてるって所か。
最近だとvelocityに回転つけられるんで、それも合わせりゃいいかと

424:名前は開発中のものです。
18/08/09 09:06:55.46 PMvEwNv2.net
>>406
Houdiniでも使ったんかと思ったがProcedural Animationsだけで作ったと書いてある
スクリプトでtransformの制御だけで作ったようだね
恐れ入るよw

425:名前は開発中のものです。
18/08/09 22:10:26.06 IWEFStf3.net
>>407
>>408
ありがとうございます、やれるだけやってみます。

426:名前は開発中のものです。
18/08/10 20:49:30.40 FesHIFfD.net
Raycastについて質問です。
rayを飛ばして当たったオブジェクトの情報を取得することは出来たのですが、ヒットしない場合、指定したY座標に到達した時のXZ座標を取得するにはどうすればいいですか?
例として高い位置(動的)から斜め下にrayを飛ばしてYが0の地点のXとZを取得したいです。

427:名前は開発中のものです。
18/08/10 21:49:03.65 bTEggd1E.net
>>410
さくっと考えてみた
d = レイの始点.y ÷ レイの向き.y
p = レイの始点 + レイの向き × -d
これで出来たりしないかな?

428:名前は開発中のものです。
18/08/10 22:05:26.37 FyfoKJKo.net
でっかい地面、四角をおく。
レイと似たようなほっそ長ーい、オブジェクトを用意してそれをカメラの子供にして、z軸をレイと同じ方向で座標調整。
あとは、このオブジェと地面の交点をコリジョンのコンタクトポイントで取得すれば出来上がり。

429:名前は開発中のものです。
18/08/10 22:37:17.53 /+Zaq+IX.net
3次元空間の方程式で解�


430:ッるんじゃないかね 高校数学だな 覚えてないが



431:名前は開発中のものです。
18/08/10 22:40:39.62 bTEggd1E.net
まあ、もともとレイキャスト使ってるわけだし、素直に平べったいでかいボックスコライダー敷いて、それとの交点拾った方が楽かもね

432:名前は開発中のものです。
18/08/10 23:03:35.77 /+Zaq+IX.net
現在地(X0,Y0,Z0) 直線の方向(l,m,n)
X=X0-l*Y0/m
Z=Z0-n*Y0/m
あってるかどうかは知らん

433:名前は開発中のものです。
18/08/10 23:14:06.24 AiF2ZNWr.net
>>415
411と一緒じゃね?

434:名前は開発中のものです。
18/08/10 23:42:56.79 /+Zaq+IX.net
411の式がなにを書いているのかよく理解できない

435:410
18/08/10 23:45:08.91 0EV31+6P.net
410ですありがとうございます
最初412のようなこと考えたんですが、とてつもなく大きくしないとヒットしない場合が出てくるのでやめて、タンジェント使って実現できました
ですが、逆にy0座標を入れた変数の方を基準として操作してもう1つの方も動くようにしましたごめんなさい

436:名前は開発中のものです。
18/08/11 03:36:04.42 w1AtvJPI.net
Plane.Raycastとかはどう?

437:名前は開発中のものです。
18/08/13 01:22:28.89 hVLDMUb5.net
スクリプトから生成したオブジェクトにアタッチしてるスクリプトのstart()内でtransform.positionに値を入れるのが効かなくて、update()内でやると効くというような現象が起たのでググったら1件バクという記事があったんですが、そんなバグありますか?
スクリプトの読み込み順は生成元を優先にしてます
解決法わかる方いましたらよろしくおねがいします

438:名前は開発中のものです。
18/08/13 02:35:54.68 h8PoyRSx.net
まずスクリプトを書けよ

439:名前は開発中のものです。
18/08/13 03:53:13.25 J+8KZvgr.net
startのあとにどっかで上書きしてるんでしょ

440:名前は開発中のものです。
18/08/13 04:28:58.13 SqAPnHqn.net
生成元のInstantiateの直後に生成元でそのオブジェクトのtransform.positionに入れると効くので上書きはしてないと思うんですよね
両方それぞれのメソッドでDebug.Log入れて見てみたんですけど、ファイル実行の優先順位を設定してても、その中のメソッドの処理のタイミングがバラバラで上手くいってない気がしました
がまだ解決はできてません

441:弟子
18/08/13 04:44:09.64 nyffuRFH.net
バグという記事のurlよければください
再現できるか確認してみたいと思います

442:名前は開発中のものです。
18/08/13 05:27:12.92 h8PoyRSx.net
抽象的なこと書かれても誰もどうすることもできんぞ
自分で解決しろとしか

443:名前は開発中のものです。
18/08/13 08:56:25.52 Z2oDd47O.net
Startの綴りが間違ってるとかそんなんだったら笑う

444:名前は開発中のものです。
18/08/13 11:48:28.22 de0S85/j.net
俺は親オブジェクト指定してなくてローカル座標のつもりがワールド座標になってたりその逆だったりならたまにある。

445:名前は開発中のものです。
18/08/13 12:58:04.92 SGRWJO+v.net
・unityで、コンビニで買えるプリペイドで購入する方法ありますか?
・DynamicBone ですが、フリー版で似た機能を使えるプラグインとかありますか?

446:名前は開発中のものです。
18/08/13 16:08:51.42 CIIJAnZJ.net
ありますん

447:名前は開発中のものです。
18/08/15 14:53:35.61 e1D8QaXW.net
>>428
URLリンク(panora.tokyo)

448:名前は開発中のものです。
18/08/16 08:17:34.80 Rx2cVzvB.net
2000x2000とかの大きなterrainだと、遠くの山が描写されず、近づくと表示されて気持ち悪いんですが、描写される距離を設定で変えたりできますか?
木や草を描写する距離などはterrainの設定から出来るんですが、terrainそのものの描写する距離を変える設定が見つかりません

449:名前は開発中のものです。
18/08/16 09:49:16.59 37AyipWF.net
テレインのインスペクターの、far、miniだったか?の値を変える。

450:名前は開発中のものです。
18/08/16 09:49:59.45 37AyipWF.net
farが遠くが、どこまで見えるかの値。

451:名前は開発中のものです。
18/08/16 15:57:21.93 Rx2cVzvB.net
テレインのインスペクターって、インスペクター上の歯車マーク(terrain settings)のところですよね?
そのfarがないんですよね
unityのバージョンは20182.2f1です

452:名前は開発中のものです。
18/08/16 19:22:49.41 37AyipWF.net
>>434
カメラのインスペクターだった。

453:名前は開発中のものです。
18/08/17 18:04:21.11 /P5tUkj4.net
剣を振った時にプレイヤーの前にコライダを出して当たり判定をを作ったんだけど、剣をふってないときにコライダを引っ込めるスクリプトが分からない、誰か助けて

454:弟子
18/08/17 20:11:32.08 ni8AyJER.net
出せたなら、その反対をやればいいと思うけど、出したコ一ドはどんなコードですか?

455:名前は開発中のものです。
18/08/17 21:06:12.39 jjg/SVIP.net
コライダーって出したり引っ込めたりするもんなのか?

456:名前は開発中のものです。
18/08/17 21:13:36.99 53TbFepx.net
コライダを消せばいいやん。(false)

457:436
18/08/17 22:51:55.49 Cl208u38.net
プレイヤーの前方に当たり判定のコライダとなるこのスクリプトをアタッチしてて
public class AttackController : MonoBehaviour {
void OnCollisionEnter2D(Collision2D coll)
{
if (coll.gameObject.tag == "Enemy")
{
Destroy(coll.gameObject);
Debug.Log("hit Object");
}
}

458:436
18/08/17 22:52:26.80 Cl208u38.net
プレイヤーコントローラーのスクリプトは下のスクリプトで右クリックでアタック時にSetActive
でコライダを表示するようにして敵を攻撃する当たり判定にしてるんだけど、一回攻撃するとコライダ出っぱなしになる
消すように色々ためしたけど上手くいかない、アドバイス頼みます
public GameObject AtariHantei;
void Update()
{
//アタック
if (Input.GetMouseButtonDown(1))
{
this.animator.SetTrigger("AttackTrigger"); //アニメ再生
audioSource.PlayOneShot(AttackSE, volumeSE); //AttackSE
AtariHantei.SetActive(true); //コライダon

}

459:名前は開発中のものです。
18/08/17 23:27:49.09 jjg/SVIP.net
詳しくはわからんけど根本的にやり方間違ってそうな気がするな

460:弟子
18/08/18 00:11:37.07 cxAelueQ.net
>>440,441
とりあえず、そのスクリプトを生かしてコード書いてみました
現状ではコライダーをオフにするコードがないので、コライダーにぶつかった際にオフにするという通知をします
public class AttackController : MonoBehaviour
{
void OnCollisionEnter2D(Collision2D coll)
{
if (coll.gameObject.tag == "Enemy")
{
Destroy(coll.gameObject);
Debug.Log("hit Object");
transform.parent.SendMessage("SetOffAtariHantei");
}
}
で、プレイヤーには
void SetOffAtariHantei()
{
AtariHantei.SetActive(false); //コライダOff
}
を追加します
プレイヤーとあたり判定は親子関係にしました
URLリンク(i.gyazo.com)
URLリンク(i.gyazo.com)
これで敵を2対置いて、ミギクリした場合としない場合で判定がちゃんとされます
URLリンク(imgur.com)

461:弟子
18/08/18 00:14:35.49 cxAelueQ.net
あぁテストする際、
void Start()
{
SetOffAtariHantei();
}
に入れて最初は通過、その後クリックで当たるとした方が分かりやすかったかもしれません><

462:名前は開発中のものです。
18/08/18 03:49:59.01 FXerNp9n.net
なんで出っぱなしになって困ってる判定を敵にあたったら消すように改修すんの?
剣を振るアニメーション終わった後にとことこ敵の前に歩いていったら攻撃があたんの?
亜空間攻撃とはなかなか見ないゲームだな
どんなゲームか


463:わからんけど普通は一定時間後にオフにすればいい SetActive falseで消えることはわかってるだろうから一定時間後にその処理を呼ぶようにすればいい 一定時間後に処理を走らせる方法はいろいろあるからググって わかんなかったらまた聞いて



464:名前は開発中のものです。
18/08/18 03:53:50.54 FXerNp9n.net
>>444
知らなければ答えなければいい
とか言って他人を煽るんだったら正しく答えてくれません?
なんで初心者が迷うような回答をいつもするんですか?

465:名前は開発中のものです。
18/08/18 11:18:41.80 CpHT33yN.net
>>441
アニメーションイベントを使うといいよ
具体的なメリットはアニメーションの好きなフレームでコライダーのオンオフできるところ
現状だと、例えば剣を振りかぶる動作の途中なのに敵がダメージ食らったりしてると思う
詳しくはウェブで!!
URLリンク(gametukurikata.com)

466:名前は開発中のものです。
18/08/18 11:49:36.64 42eZyM7+.net
<<442
>>443
ありがとうございます
攻撃→コライダ出る→敵に当たる→コライダ消えるって感じなので、攻撃を空振りしたあとに
敵に当たるまでコライダ出っぱなしになるんだけど、これはどうすればいいの?
そもそもこの攻撃の当たり判定の仕方は根本的に間違ってるの?入門本三冊持ってるんだけど
どれにも攻撃の当たり判定は載ってなかったからネット検索してやってみたんだけども
アニメーションイベント使ってやった方がいいのだろうか?ちなみに本にはアニメーションイベントのやり方は載ってなくて
ググってみたけどよく分からなかった

467:名前は開発中のものです。
18/08/18 12:18:13.14 42eZyM7+.net
>>445
>>447
ありがとうございます、一定期間後の処理で出来るようになりました。
アニメーションイベントもわからないので調べて出来るようになろうと思う
void AtariKesu()
{
AtariHantei.SetActive(false);
}
void Update()
{
//アタック
if (Input.GetMouseButtonDown(1))
{
AtariHantei.SetActive(true); //コライダon
Invoke("AtariKesu", 0.3f);
}

468:名前は開発中のものです。
18/08/18 14:52:49.51 X+sFoNwa.net
>>448
間違い。
①コライダー出す→コライダー消す
②コライダーに当たる、
①②の判定は別で処理すべき。
②で当たった判定を①に渡して、途中で消す作りにすべき。

469:名前は開発中のものです。
18/08/18 17:20:42.60 D8/ukjCM.net
raycastのrayって判定がけっこう曖昧になったりすることありますか?
マウスが乗ってるとこのterrainの座標を取得するのは問題なく出来てるんですが、xz座標を指定して高い位置から真下に飛ばしてヒットしたy座標を取得しようとすると取得できたり出来なかったり違った値が入ったりするんですが
少し感じたのはinfinityにするとしても発射位置を少し高くすると反応しなくなったりしてます

470:名前は開発中のものです。
18/08/18 19:25:51.68 An0BPv4U.net
>>449
アニメーションEventは一回わかると結構簡単だ
public void AtariKesu()のスクリプトをつける
アニメーションのEventにAtariKesuを入れるとそのコマに来たら呼び出してくれる

471:名前は開発中のものです。
18/08/18 23:30:28.71 47mEmEPe.net
>>451
曖昧になったと感じたことはない。
私は、な。

472:名前は開発中のものです。
18/08/18 23:34:58.38 CVdxGkvB.net
お前の話は聞いてない

473:名前は開発中のものです。
18/08/19 00:14:57.54 9mjqz3Tm.net
>>449
はじめて自分でアニメーションまでつけてやってみた
結構めんどくさかった
剣にコライダーつけてisTrigerをオン・オフにするようにした
コライダーのisTrigerのチェック入れておく(オフの状態)
public Collider2D coll2;
void Start () {coll2=GetComponent<Collider2D>();}
public void collOn(){coll2.isTrigger=true;}
public void colOff(){coll2.isTrigger=false;}
void OnCollisionEnter2D(Collision2D col) {Destroy(col.gameObject);}
あとは剣のanimationで振り始めにEventをつけてcolOnを選んで
振り終わりにcolOffを選ぶ

474:名前は開発中のものです。
18/08/19 00:41:49.62 gr5beU/F.net
>>452
>>455
ありがとうございます
自分もそれで試してみようと思う

475:名前は開発中のものです。
18/08/21 01:36:00.94 ypI3wEdL.net
上達するにはチュートリアルやれとしか言われないのですが、
あの数をやり終えてる人はなかなかいないと思います。
興味あるチュートリアルをやっているのか、好きなゲームを作って学んでいるのか、
皆さんはどうやって上達、脱初心者をしたのですか。

476:名前は開発中のものです。
18/08/21 01:47:03.06 en2r1zRw.net
聞いたところで何になる?
とにかく作る事。
作りたいものがあれば、それに必要なアルゴリズム、ロジックを構築する、その為にそこをしらべる。
これの繰り返し。

477:弟子
18/08/21 01:55:37.36 RFRywrT+.net
>>457
初心者スレでそれ聴かれても
自分はずっと初心者でいいかなと思ってますよ

478:名前は開発中のものです。
18/08/21 03:04:32.49 fxmPVXdZ.net
ええ…

479:名前は開発中のものです。
18/08/21 15:11:17.70 8qBPp1CD.net
>>457
チュートリアルはroll a ballしかやらなかったな
その後は作りたいゲームの案から比較的簡単なやつを選んで作っていった
上達の秘訣はググり力だと思うよ
リファレンスを眺めて思いを馳せるのもいいかもしれない

480:名前は開発中のものです。
18/08/24 11:55:13.06 Grbxnj3m.net
敵がプレイヤーに向かってくるスクリプトはできたんだけど敵の進行方向にspriteを左右に反転させるコードがわかりません
分かる方いたらよろしくお願いします。
public class Chase : MonoBehaviour
{
public GameObject Player;
public float Speed;
void Update()
{
this.transform.position = Vector2.MoveTowards(this.transform.position, new Vector2(Player.transform.position.x, Player.transform.position.y), Speed * Time.deltaTime);
}
}

481:名前は開発中のものです。
18/08/24 12:10:02.41 4yphetVh.net
void Update()
{
Vector3 prePosition = transform.position;
this.transform.position = Vector2.MoveTowards(this.transform.position, new Vector2(Player.transform.position.x, Player.transform.position.y), Speed * Time.deltaTime);
if(transform.position.x - prePosition.x >= 0){
transform.localScale.x = 1;
}else{
transform.localScale.x = -1;
}
}
こんな感じでどう?
2Dやったことないけどねw

482:名前は開発中のものです。
18/08/24 12:24:40.51 4yphetVh.net
すまん横着した
こっちで
void Update()
{
Vector3 prePosition = transform.position;
this.transform.position = Vector2.MoveTowards(this.transform.position, new Vector2(Player.transform.position.x, Player.transform.position.y), Speed * Time.deltaTime);
Vector3 scale = transform.localScale;
if(transform.position.x - prePosition.x >= 0){
scall.x = 1;
}else{
scall.x = -1;
}
transform.localScale = scale;
}

483:名前は開発中のものです。
18/08/24 12:25:36.69 4yphetVh.net
スペルミスってるw
もうだめだw

484:462
18/08/24 12:53:19.91 Grbxnj3m.net
>>465
できました
ありがとうございます

485:名前は開発中のものです。
18/08/24 13:27:58.55 4yphetVh.net
>>466
かなり当てずっぽうで書いたところはあるが…
まあできたのなら…
個人的にはscaleを1倍固定にしてるのが後々問題になりそうな気がするが
そのときはそのときで…

486:帝王
18/08/24 21:11:12.99 4jbbRJqV.net
あるアニメーション付きのアセットをいじって思ったのですが
歩くアニメーションクリップがありまして
ローカルの座標を歩いてます
そしてスクリプト上からも位置を更新して歩かせているのですが
そうしますと
アニメーションクリップの初めと後でローカル座標をいったり来たりして
グローバル座標の移動も加わって
引き戻されてワープするような歩き方になります
これはモデルだけ使ってこのクリップは使わないほうがいいのでしょうか

487:名前は開発中のものです。
18/08/24 22:16:08.41 Grbxnj3m.net
>>467
いや助かりました、ありがとうございます
素人すぎてどういう問題がでるのか想像できないけど、今のところは大丈夫そうです

488:名前は開発中のものです。
18/08/24 22:34:13.70 W1ALrPmX.net
>>468
その場で歩くモーションないの?もしくはそういうふうにアニメーションを修正できないの?
だとしたらそのアニメーション使うのを諦めるか、アニメーションの終わりを捕まえてそのタイミングで座標を更新するかじゃないかな
後者は相当シビアにやらないと瞬間移動しそうだけど

489:帝王
18/08/24 22:56:58.


490:98 ID:4jbbRJqV.net



491:名前は開発中のものです。
18/08/24 23:37:56.22 k7t8ZXtf.net
>>471
いや、普通はその場で歩くモーションで作るよ
モーション終わりを捕まえるのは超苦肉の策だと思って
歩く速度が少し変わったらアニメーション全部修正なんてやってられんでしょ

492:名前は開発中のものです。
18/08/25 06:27:10.69 RNfQBHTM.net
>>469
例えば、このモンスターは大きさ10倍だぁ!!
みたいなときにね、まあ、困れ
>>468
諦める前にAnimationの設定で
Root Transform Position(XZ)項目のBake Into Poseに
チェックが付いてるはずだから外してみてくれないかい?
URLリンク(imgur.com)

493:帝王
18/08/25 11:43:31.25 YP3VndSY.net
>>473
ありがとうございます
たしかにclipのほうにはその設定があります
それをいじればたしかにその場で動かすことも可能になりそうですね
Based UponでCenter of Massにすることもできるのですね
しかしRigをHumanoidではなくRegacyでやっているため
アニメーションタブにはその設定は出ないようです
UNITY 逆引き 300の極意という本の
アセットでZombie (Zombie Draft)というフリーのものでやってるんですけど
まだ当方UNITYの3Dについてあまり勉強していないため
アニメーションの読み込みについてよくわかってないので
とりあえずどんなものか知ってみたくて質問しました
何かを作ってるわけではないので
動作の修正を完了できていませんが良しとします


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch