[過去ログ] 【3Dゲームエンジン】Unity質問スレッド29 [無断転載禁止]©2ch.net (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
464(2): 名前は開発中のものです。 [] 2017/06/18(日) 20:19:26.05 ID:+mnWtDzw(2/3) AAS
>>457これなんてやつ?
465: 名前は開発中のものです。 [sage] 2017/06/18(日) 20:28:32.00 ID:3wXsUBad(4/4) AAS
>>464
モグリかよ
466(3): 名前は開発中のものです。 [sage] 2017/06/18(日) 20:31:46.17 ID:Ga9T3hxB(7/9) AAS
>>462462(1): 名前は開発中のものです。 [sage] 2017/06/18(日) 20:13:48.96 ID:q1X0lAjX(5/5) AAS
>>459
最初の問い(>>389)はランタイム時の効率についての話しだが、それについてはFindのほうがオーバーヘッドが大きいよねと概ねコンセンサスは出来てるだろう
(直接、Find系とインスペクタ参照で速度比較したデータが示されていないけど)
で、>>424でランタイム時の効率だけでなくメンテナンス性にも話題が広がったので、複雑な参照関係はエディタ拡張スクリプトで自動化しておくと効率面でもメンテナンス面でも有益なことが多いよね、となった
なんかおかしいかな?
そう、その「複雑な参照関係はエディタ拡張スクリプトで自動化しておく」方法を知りたいんです
自分の状況を書いておくと、
1. 最初はインスペクタでドラッグ&ドロップで参照設定していた
2. UIとか配置オブジェクトが1シーンに数十個とかになってくると、さすがにポチポチは面倒…
3. Awakeで命名規則に従ってFindで設定しちゃえ
4. ランタイムではパフォーマンスが悪いし、オブジェクトのリネームに弱いと気づき、泣く泣くポチポチへ戻る
で現在4の状態なので、それを自動化できるアセットなら欲しいと思ったわけです
この話をしてる流れの中でUnityエディタ上でリフレクションとか使って自動設定するのかなとか考えたけど
運用考えると破綻しそうなので、すでにバリバリ実用してそうな>>441441(4): 名前は開発中のものです。 [sage] 2017/06/18(日) 14:46:23.45 ID:XAVbtWpl(3/3) AAS
>>432
全面的に同意、求道的すぎるのは認める
ここ初心者多いから>>426みたいなクソ開発者になるなという意味を込めて厳しめに書いた
リスクを理解した上で使うならともかく、安易に便利だからで多用すると一気にコードが糞になるからなぁ
>>439
あるある、ついでにエディタ上で触らせる必要がなく親子関係が確定してるオブジェクトなんかはhideFlagsも立てたりする
とかに参考コードのおこぼれでももらおうと思ったわけです
やっぱりそんなものはないのか、ポチポチ業務へ戻りますかね…
467(2): 名前は開発中のものです。 [sage] 2017/06/18(日) 20:34:34.58 ID:nmnJlvzm(5/9) AAS
>>464
PlayMaker
UE4のブループリント風エディタ拡張
もはやゲームプログラマがコードを書く時代は終わった
468: 名前は開発中のものです。 [sage] 2017/06/18(日) 20:37:22.40 ID:nmnJlvzm(6/9) AAS
コルーチン、LINQ、ラムダ式を使わないならコードなんて書くな
もうお前がやろうとしている事は他の誰かがアセットにして公開しているのだから
469(1): 名前は開発中のものです。 [] 2017/06/18(日) 20:41:11.49 ID:+mnWtDzw(3/3) AAS
>>467
うわーこんな便利な物があるんですね
すぐに買います
470(1): 名前は開発中のものです。 [sage] 2017/06/18(日) 20:46:21.89 ID:nmnJlvzm(7/9) AAS
今はもうC#プログラミングは関数をポータブルに持ち運ぶ世界だよ
クラスの概念さえ以前より希薄になろうとしている
遠く離れた、名前すら知りもしない世界の果てのクラスの関数をプレイヤークラスが実行できる
これがファーストクラス関数型の世界
従来の手続き的なコーディングはレガシープログラマと言われる
Unityでコーディングする意味がない
471: 名前は開発中のものです。 [sage] 2017/06/18(日) 20:48:36.20 ID:m9nbofGj(1) AAS
>>469
まて、早まるな。
PlayMakerは確かに便利だけど、
結局プロパティとかメソッドの知識がないと組めないのは変わらんぞ。
472: 名無し@キムチ [] 2017/06/18(日) 21:14:01.06 ID:UdS9CyS1(1) AAS
T2VBuilderはUnityでつくられていると思いますが、
あのように自分の画面をキャプチャーしてAVIに録画する関数は、
Unityのスクリプトにあるのですか?
またそれは何という名前の関数ですか?使い方もお願いします。
473: 名前は開発中のものです。 [sage] 2017/06/18(日) 21:37:15.68 ID:Fr4XIrmP(2/2) AAS
>>470
そのうちリアクティブスパゲティ作りそうだな
474(1): 名前は開発中のものです。 [sage] 2017/06/18(日) 21:40:40.73 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: 名前は開発中のものです。 [sage] 2017/06/18(日) 22:01:39.46 ID:Ga9T3hxB(8/9) AAS
>>474
うーん、せっかく貼っていただいたんだけど違うかな…?
それだとListの中をランタイム時にいちいち回して該当オブジェクトを検索しなくちゃいけないからさらに効率悪そう
他の人はどうやってるんだろ?って調べてみると、ZenjectってライブラリがやってるDIがイメージ通りっぽい
ただこれも結局はランタイム時に参照関係を解消するみたいなので処理効率という点ではFind系と変わらなそう?
…もう諦めてしばらくはドラッグ&ドロップでやっていきますわ
476(1): 名前は開発中のものです。 [sage] 2017/06/18(日) 22:08:44.71 ID:WNEWBLm8(3/4) AAS
ああ、uiはuiの参照先にアタッチ、playerはplayerにみたいなことをやりたいってこと?
477: 名前は開発中のものです。 [sage] 2017/06/18(日) 22:12:26.43 ID:Ga9T3hxB(9/9) AAS
>>476
そそ。インスペクターにドラック&ドロップでポチポチ設定するのも数が少なけりゃいいけど
大量になってくると面倒かつアタッチ先ミスったりアタッチ漏れとかあるから
それで自動化って話が出てたから期待しちゃっただけ
478(1): 名前は開発中のものです。 [sage] 2017/06/18(日) 22:14:14.28 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に移ったらフラグが消えるようにと思って書いたのですが、なぜこんな挙動になるのか理解できないので教えてください。
479: 名前は開発中のものです。 [sage] 2017/06/18(日) 22:17:14.91 ID:nmnJlvzm(8/9) AAS
コルーチンを使えば解決しますよ
480: 名前は開発中のものです。 [sage] 2017/06/18(日) 22:25:34.41 ID:nmnJlvzm(9/9) AAS
そらフラグ立てた直後にステート取得したってアイドルのままだよなぁ??
やっぱり必要なのはコルーチンじゃないか
481(1): 名前は開発中のものです。 [sage] 2017/06/18(日) 23:29:22.76 ID:WNEWBLm8(4/4) AAS
>>478
jumpStateに正しいHash値が設定されてないとか
たとえば
static int JumpState = Animator.StringToHash("歩いてるどー");
みたいなコードになってるとすると
永久に==JumpStateは満たせないからジャンプし続けそうだね
482: 名前は開発中のものです。 [sage] 2017/06/19(月) 01:29:13.74 ID:6qJGZiJQ(1) AAS
まさかのコルーチンおじさん登場
483: 名前は開発中のものです。 [sage] 2017/06/19(月) 01:51:55.80 ID:7YbLLl2h(1/2) AAS
>>466
これ説明しだすときりがないんよなぁ
>3. Awakeで命名規則に従ってFindで設定しちゃえ
これでうまく動いていたなら、そのコードを微調整してメソッドに切り出して、ContextMenu属性つけて、Resetから叩くようにするだけでもいいかも?
Resetはスクリプトをアタッチした時に参照を掴む処理を呼ぶため、ContextMenu属性は任意のタイミングで参照を再設定するために使う感じ
484: 名前は開発中のものです。 [sage] 2017/06/19(月) 02:40:14.82 ID:7YbLLl2h(2/2) AAS
>>466
ちょっとネタっぽい作りにするならこんな感じとか?
エディタ上にしか存在しないオブジェクトを作ってそいつに参照抱えさせて、受け手にばら撒くスタイル
ビルド後は撒き手側クラスすら存在しないので、ダメな子であるFindObjectsOfTypeを使っても実行時のパフォーマンスには影響しない
外部リンク:docs.google.com
まあこれはあくまでもこんな事もできるというお遊びでしかないので、本気でこれを実用しようとか考えないようにな
真面目に作るならEditorWindow使う
485: 名前は開発中のものです。 [sage] 2017/06/19(月) 02:43:33.04 ID:+84dxBsS(1) AAS
自分もエディタ拡張で事前に自動Findするやつ使ってるけど
量が増えすぎると結局不安になってきて
「あれ? これ使う時にResourceから逐一Loadすればもうそれでいいんじゃないか・・・?」
ってなってきちゃった。
486: 名前は開発中のものです。 [sage] 2017/06/19(月) 02:56:34.21 ID:omxlK2mg(1) AAS
>>481
Base Layer.を抜かしてました。
くだらなすぎて泣けてきました。
487(1): 名前は開発中のものです。 [] 2017/06/19(月) 06:54:41.97 ID:rsZkYwXo(1) AAS
アセットをかえば全て解決ですね
488: 名前は開発中のものです。 [sage] 2017/06/19(月) 09:07:19.97 ID:IRp6o2OC(1) AAS
>>467
uScriptはどうなん?
上下前次1-新書関写板覧索設栞歴
あと 514 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.019s