[過去ログ] 【3Dゲームエンジン】Unity質問スレッド29 [無断転載禁止]©2ch.net (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
449
(1): 2017/06/18(日)18:30 ID:Ga9T3hxB(2/9) AAS
>>448
いや難しくないならなおさら該当機能のみを切り出したシンプルなコード提供おなしゃす
URLは主とする目的以外のスクリプトが多すぎて初心者にはどこ切り出したらいいのかわかりません

>>441の方でもいいですよ
Find使うのは良くないってわかってるけど
インスペクタでポチポチ設定するのもな…ってのを解決できるんでしょ?
ウンチクをダラダラ書くよりもコードと行動で示すのが他の開発者にとっても有益では
何も本垢でとは言わないから捨て垢ででも公開おなしゃす
450: 2017/06/18(日)18:41 ID:9R6VPmIg(1) AAS
スゲー他力本願w
451: 2017/06/18(日)18:47 ID:d8uwf8Mk(2/2) AAS
エディタ用のスクリプトを実際に使うとなると、自分で読み書き出来ないと実用性ないのでは
452
(1): 2017/06/18(日)18:48 ID:M/2QAqjI(3/5) AAS
OneStepEffectsってcsが1つ入ってるだけなんだが?
255行目のApplySSAO()とか見ればいいじゃん
幾らなんでも酷いんじゃねーの?
453: 2017/06/18(日)19:08 ID:X5Sl8Nuy(5/5) AAS
>>449
アセットを買ってもダメみたいですね
454: 2017/06/18(日)19:25 ID:Ga9T3hxB(3/9) AAS
>>452
確かに丸投げはいかんなと思い直して読んだけど、このコード提示するのは見当違いじゃね
ここまでさんざん議論されてきたのって
Unityエディタ上でインスペクタで参照設定するのと
AwakeでFind&GetComponentするのとではランタイム時にどっちが効率いいかだよね

URL先のコードはUnityエディタ上のボタン一つでカメラやライトを
FindObjectOfTypeで全走査してAddComponentやプロパティの設定してるだけ

つまりAwakeでFindせずかつインスペクタでポチポチしなくてもいいことへの
解決法でもなんでもないものっていう

>>439で自動化してる俺には関係無いって言ってるけどそもそも求めている結果が違うから
そりゃ関係無いという
455: 2017/06/18(日)19:28 ID:Ga9T3hxB(4/9) AAS
ちなみにFind系は基本的にエディタ拡張でヒエラルキー走査して
ごにょごにょやるためにあるようなものだと思ってる
Unityエディタ上ではパフォーマンスは多少犠牲になっても問題ないし

こうなると>>441の”あるある”に期待やなぁ
456
(1): 2017/06/18(日)19:39 ID:M/2QAqjI(4/5) AAS
エディタでメソッド実行すると変数はインスペクタに記録されるから
手動で設定したのと同じなんだけどな
457
(1): 2017/06/18(日)19:49 ID:nmnJlvzm(3/9) AAS
すまん、お前らまだUnityでコーディングしてるね

画像リンク


今はビジュアルスクリプディングの時代ですよ
458
(1): 2017/06/18(日)19:50 ID:nmnJlvzm(4/9) AAS
お前らまだUnityでコーディングしてるの?
459
(2): 2017/06/18(日)19:51 ID:Ga9T3hxB(5/9) AAS
>>456
いやランタイム時の参照をどう持つかのお話なので
Unityエディタ上でコンポーネントのプロパティの設定(と無い場合はAddComponent)を
自動化してるか手動でやるかのあなた話は、議論している箇所が違うんですよね…
煽ってるわけではないので気を悪くしないでね
460
(1): 2017/06/18(日)20:01 ID:M/2QAqjI(5/5) AAS
>>459
話もブレてるし何を理想として思い描いたのかよく分からないな
461: 2017/06/18(日)20:03 ID:0/Ag2Y7d(1) AAS
>>458
コルーチンをビジュアルに書いたの見せてくれ
462
(1): 2017/06/18(日)20:13 ID:q1X0lAjX(5/5) AAS
>>459
最初の問い(>>389)はランタイム時の効率についての話しだが、それについてはFindのほうがオーバーヘッドが大きいよねと概ねコンセンサスは出来てるだろう
(直接、Find系とインスペクタ参照で速度比較したデータが示されていないけど)

で、>>424でランタイム時の効率だけでなくメンテナンス性にも話題が広がったので、複雑な参照関係はエディタ拡張スクリプトで自動化しておくと効率面でもメンテナンス面でも有益なことが多いよね、となった

なんかおかしいかな?
463: 2017/06/18(日)20:19 ID:Ga9T3hxB(6/9) AAS
>>460
俺の話は徹頭徹尾、ランタイム時の参照をAwakeでFindしないかつインスペクタでポチポチしない方法です
>>439の書き込みにこの話の求道者である>>441が賛同してたので勝手に期待しちゃっただけです
あなたのやっている自動化は私の求めるものとは違っていただけなのでどうぞ気になさらずに
464
(2): 2017/06/18(日)20:19 ID:+mnWtDzw(2/3) AAS
>>457
これなんてやつ?
465: 2017/06/18(日)20:28 ID:3wXsUBad(4/4) AAS
>>464
モグリかよ
466
(3): 2017/06/18(日)20:31 ID:Ga9T3hxB(7/9) AAS
>>462
そう、その「複雑な参照関係はエディタ拡張スクリプトで自動化しておく」方法を知りたいんです
自分の状況を書いておくと、
1. 最初はインスペクタでドラッグ&ドロップで参照設定していた
2. UIとか配置オブジェクトが1シーンに数十個とかになってくると、さすがにポチポチは面倒…
3. Awakeで命名規則に従ってFindで設定しちゃえ
4. ランタイムではパフォーマンスが悪いし、オブジェクトのリネームに弱いと気づき、泣く泣くポチポチへ戻る
で現在4の状態なので、それを自動化できるアセットなら欲しいと思ったわけです

この話をしてる流れの中でUnityエディタ上でリフレクションとか使って自動設定するのかなとか考えたけど
運用考えると破綻しそうなので、すでにバリバリ実用してそうな>>441とかに参考コードのおこぼれでももらおうと思ったわけです

やっぱりそんなものはないのか、ポチポチ業務へ戻りますかね…
467
(2): 2017/06/18(日)20:34 ID:nmnJlvzm(5/9) AAS
>>464
PlayMaker
UE4のブループリント風エディタ拡張

もはやゲームプログラマがコードを書く時代は終わった
468: 2017/06/18(日)20:37 ID:nmnJlvzm(6/9) AAS
コルーチン、LINQ、ラムダ式を使わないならコードなんて書くな
もうお前がやろうとしている事は他の誰かがアセットにして公開しているのだから
469
(1): 2017/06/18(日)20:41 ID:+mnWtDzw(3/3) AAS
>>467
うわーこんな便利な物があるんですね
すぐに買います
470
(1): 2017/06/18(日)20:46 ID:nmnJlvzm(7/9) AAS
今はもうC#プログラミングは関数をポータブルに持ち運ぶ世界だよ
クラスの概念さえ以前より希薄になろうとしている

遠く離れた、名前すら知りもしない世界の果てのクラスの関数をプレイヤークラスが実行できる
これがファーストクラス関数型の世界

従来の手続き的なコーディングはレガシープログラマと言われる
Unityでコーディングする意味がない
471: 2017/06/18(日)20:48 ID:m9nbofGj(1) AAS
>>469
まて、早まるな。
PlayMakerは確かに便利だけど、
結局プロパティとかメソッドの知識がないと組めないのは変わらんぞ。
472: 名無し@キムチ 2017/06/18(日)21:14 ID:UdS9CyS1(1) AAS
T2VBuilderはUnityでつくられていると思いますが、
あのように自分の画面をキャプチャーしてAVIに録画する関数は、
Unityのスクリプトにあるのですか?
またそれは何という名前の関数ですか?使い方もお願いします。
473: 2017/06/18(日)21:37 ID:Fr4XIrmP(2/2) AAS
>>470
そのうちリアクティブスパゲティ作りそうだな
474
(1): 2017/06/18(日)21:40 ID:WNEWBLm8(2/4) AAS
>>466

単にこういうやつを求めてる?

using UnityEditor;
using UnityEngine;
using System.Collections.Generic;

public class attachSelectObjects
{
[MenuItem("Assets/autoAttach")]

static void autoAttach()
{
List<GameObject> l = GameObject.Find("GameManager")
.GetComponent<myScript> ().myList; //アタッチ先のリストを取得

foreach(GameObject go in Selection.gameObjects){
//ヒエラルキーで選択しているゲームオブジェクトをリストに登録
l.Add (go);
}
}
}
475: 2017/06/18(日)22:01 ID:Ga9T3hxB(8/9) AAS
>>474
うーん、せっかく貼っていただいたんだけど違うかな…?
それだとListの中をランタイム時にいちいち回して該当オブジェクトを検索しなくちゃいけないからさらに効率悪そう

他の人はどうやってるんだろ?って調べてみると、ZenjectってライブラリがやってるDIがイメージ通りっぽい
ただこれも結局はランタイム時に参照関係を解消するみたいなので処理効率という点ではFind系と変わらなそう?
…もう諦めてしばらくはドラッグ&ドロップでやっていきますわ
476
(1): 2017/06/18(日)22:08 ID:WNEWBLm8(3/4) AAS
ああ、uiはuiの参照先にアタッチ、playerはplayerにみたいなことをやりたいってこと?
477: 2017/06/18(日)22:12 ID:Ga9T3hxB(9/9) AAS
>>476
そそ。インスペクターにドラック&ドロップでポチポチ設定するのも数が少なけりゃいいけど
大量になってくると面倒かつアタッチ先ミスったりアタッチ漏れとかあるから
それで自動化って話が出てたから期待しちゃっただけ
478
(1): 2017/06/18(日)22:14 ID:mYx0Ucs7(1) AAS
初心者です。
ボタンを押したらidleからjumpステートにbool値で移ってまたidleにすぐ戻るスクリプトを書きたいのですが。
if (Input.GetButtonDown("Bbutton"))
{
if (currentBaseState.nameHash == idleState)anim.SetBool("e", true);
}
if (currentBaseState.nameHash != idleState)anim.SetBool("e", false);
と書いてみたらなぜかうまくいきました。
if (Input.GetButtonDown("Bbutton"))
{
if (currentBaseState.nameHash == idleState)anim.SetBool("e", true);
}
if (currentBaseState.nameHash == jumpState)anim.SetBool("e", false);
でもこれだと一度押したら永遠とjumpし続けるようになってしまって。
ステートがjumpに移ったらフラグが消えるようにと思って書いたのですが、なぜこんな挙動になるのか理解できないので教えてください。
1-
あと 524 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ

ぬこの手 ぬこTOP 0.016s