X



【3Dゲームエンジン】Unity質問スレッド33
■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。
垢版 |
2017/12/19(火) 09:35:55.55ID:VZwsAqll
フリー版で開発したゲームは個人・法人を問わず追加のロイヤリティーなしで販売できます。
プラットフォームサポートは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質問スレッド32
http://mevius.5ch.net/test/read.cgi/gamedev/1509307535/
0037名前は開発中のものです。
垢版 |
2017/12/24(日) 13:14:49.64ID:0vLM8uj2
Unityには、メニュー画面を呼び出す際に使えるような、
専用の機能があるのかもしれないと思って・・・

シーンを完全破棄して次のシーンへ行くのではなく、
現在のシーンをいったん凍結(一時停止)させて、
一時的に他のシーンへ行って、また元のシーンへ戻れるような機能が
最初から備えられていたら良いな〜と
0038名無し@キムチ
垢版 |
2017/12/24(日) 13:28:09.16ID:NPNkP5ON
>>36
トライ&エラーはできれば避けたいです。
トライ&サクセスの繰り返しでいきたいです。そうすればここに質問することもないでしょうw
0039名前は開発中のものです。
垢版 |
2017/12/24(日) 13:57:51.12ID:A8FAsKbZ
ゲーム制作でトライアンドエラーから逃げるってまともなゲーム作れないぞ
そんなに避けたいならガッチガチのシステム開発に行った方がいい
トライアンドエラーがゲーム制作の楽しさだと思うし大きいところも小さいところも必ずやるぞ
0040名前は開発中のものです。
垢版 |
2017/12/24(日) 14:01:06.61ID:A8FAsKbZ
>>37
シーン合成してメニューシーンを上に出せばいいんじゃないの?
ゲームシーンの一時停止だって色んなやり方あるよ
最初から備わっててほしいなら極論ツクールでも使いなよってなる
ゲームごとに微妙に異なる要求をエンジン側が完璧にサポートするなんて相当無理があると思うよ
0041名前は開発中のものです。
垢版 |
2017/12/24(日) 14:16:55.62ID:JKUwON6s
自分で試してればここでやり取りしてる間に終わってたな
つまりここで質問するのは時間の無駄
0042名前は開発中のものです。
垢版 |
2017/12/24(日) 14:19:05.58ID:ObOt/iqm
やり方わかってるんだからヤレよ、って事だろ。
「トライアンドエラーの末に分からないから質問した」ならわかるがな。
0044名前は開発中のものです。
垢版 |
2017/12/24(日) 15:40:15.66ID:tmAsU/jT
>>11
WebGLはとにかくJavaScriptのパースにメモリを使うし リリースもオンメモリになっちゃうから、出来るだけアセットバンドルにすればいけるかもね
0045名無し@キムチ
垢版 |
2017/12/24(日) 20:41:16.03ID:NPNkP5ON
自己解決しました。どんなマテリアルでも貼れました!!
マテリアルのレンダリングモードをOpaqueからTransparentに変えてみたら、偶然にもすべてのマテリアルが貼れるようになりました!!
根本的解決にはなってないと思いますが、当方は見た目さえ変わればそれで満足なので、これでよしとしますw
いやあ、偶然って恐ろしいですねえwwwww!!!
0046名前は開発中のものです。
垢版 |
2017/12/24(日) 21:47:47.87ID:fvuKTl0Y
最近他の人がBuildしたUnityで作成したアプリを修正しなきゃいけなくなったんですが、作られたのがv5.3.4fなんですよね……
v5.3.4fインストールすればプロジェクト自体は開けますが、再ビルドすら出来ない始末。

No Android module loaded.とか出てるので、Open Download Pageボタン押すと既にリンクが消えてたりします。
IAP.csはAppleTangle does not exist in the current contextとか言われるし、最新版のUnityで開くと、WebViewPlugInsが既に互換性無くて使えないっぽいし orz
0050名前は開発中のものです。
垢版 |
2017/12/25(月) 01:20:35.99ID:yp1Pbrrq
>>49
2〜3週間でチュートリアルクリアして、プラス2週間で何も見ないで
チュートリアル完成品レベルの物が出来るくらいでないと適正はないでしょ
ツクールも1作目の平均製作時間は、初めて触って1ヶ月が一番多いらしい
出来もしない奴がダラダラ続けた結果にしか見えない
0052名前は開発中のものです。
垢版 |
2017/12/25(月) 01:33:11.45ID:rS5pdmbW
人間って好きな事は1度で覚えるが嫌いな事は100回やっても覚えない
金目当てとか訳分らん妄想でやりたくもない事を嫌々やってるからそうなる
目的と手段が合致してないんだよ
0054名前は開発中のものです。
垢版 |
2017/12/25(月) 02:39:50.26ID:BbwzCfW8
マラソンみたいに、自力で走れない奴はさっさとリタイヤすりゃいいのに、
肩貸せとかおぶれとか、他力本願な方法で解決しようとするから嫌われてんだよ
最も荒らしたり人に迷惑掛けなければ、そこまでは嫌われなかっただろうに
平気でやるからなコイツ 救いが無い
0055名前は開発中のものです。
垢版 |
2017/12/25(月) 02:50:03.76ID:ZNYlD8z4
余裕がない奴らばかりだな
ゲームスレなんだから心広く楽しもうぜ
良いキャラしてるよ
0057名前は開発中のものです。
垢版 |
2017/12/25(月) 07:29:12.03ID:CLLh+8nA
>>46
人の作ったプログラムのバグ取りなんて至難の技過ぎる。
自分が以前作ったプロジェクト再開しようとしたときでさえ訳ワカメだったorz
新しく作り直して、少しづつ機能追加していってなんとか続けられてる。
バグ出たときも追加分を調べればいいから、新しく作った方が楽。かも?
0058名前は開発中のものです。
垢版 |
2017/12/25(月) 11:08:54.46ID:yhH1PaoZ
始めたばかりの初心者で困っています。どなたかご助言下さい。

PNGのテクスチャから作成したスプライトが勝手に半透明になることがあります。
プレハブから連続してInstantiateしたスプライトが一部だけ半透明になったりします。

Update内でGetComponent<SpriteRenderer>して
material.colorのaを1.0にしても効果はなく、
もちろんunityやPCの再起動でも改善しないです。

ググるとレンダラーをdx9にしろとかフォーマットをRGBA32にしろとか
出て来たのですがどれも決定的ではありませんでした。
005958
垢版 |
2017/12/25(月) 11:15:35.54ID:yhH1PaoZ
すみません、環境を書き忘れていました。
2017.3.0f3 / Windows10 / GeForce
です。よろしくおねがいします。
006158
垢版 |
2017/12/25(月) 11:32:06.01ID:yhH1PaoZ
>>60
アルファレイヤはあります
006458
垢版 |
2017/12/25(月) 12:19:19.78ID:yhH1PaoZ
>>62
そんな感じなんですが、書いてある方法では効きませんでした。
2017.3からdx9対応は外されたみたいですしね・・・

>>63
フリー配布のアセットに差し替えて動かしたりしたんですが
症状は相変わらずでした・・・
0065名前は開発中のものです。
垢版 |
2017/12/25(月) 13:03:26.28ID:TMiWrQHE
独りでやれないと適性がないというのなら
ゲームエンジンに頼ってる時点で失格じゃないのか
自分の得意分野は自分で処理して苦手なことは外部委託する これ常識
0070名前は開発中のものです。
垢版 |
2017/12/25(月) 14:14:58.80ID:DvZ14Pj6
>>65
カナヅチがプールで「今から飛び込むけど溺れちゃうカモ」アピールしながら
ダイブしてたら、1〜2回くらいなら助けて貰えんじゃね?
100回とか200回になったら「ウザイから死ね」か「2度と来んな」になるだろ
普通に出来ない人がやる遊びじゃないからな

自己責任で管理できないなら人に迷惑かけてまでやる必要ない
0071名前は開発中のものです。
垢版 |
2017/12/25(月) 15:00:06.27ID:2AR7AtoJ
>>70
カナヅチのためにアセットという浮き輪があるわけですよ
溺れることを考えたらアセットなんて安いですよね
0074名前は開発中のものです。
垢版 |
2017/12/25(月) 18:34:48.23ID:tjCafBSM
UIを配置すると、ゲームビューには映るんですが、
なぜかシーンビューはUIが映らず、背景のオブジェクトのみ写ります

保存して再起動したら、今後はシーンビューにUIのみが写り、
背景のオブジェクトが映らなくなってしまいました

UIのみシーンビューに映したり、
UI以外だけシーンビューに映したり、
一体どこで切り替わっているんでしょうか??
0075名前は開発中のものです。
垢版 |
2017/12/25(月) 18:41:18.68ID:h7ZqpgwX
>>74
インベントリのアセット入れたときの体験だが
UIがステージに対してめちゃくちゃでかく設定されてない?
0076名前は開発中のものです。
垢版 |
2017/12/25(月) 18:41:26.16ID:a9KBz+5+
>>74
UIってcanvasだよね?
シーンビューに映らないんじゃなくて存在するけど違う位置を見てるだけじゃない?
canvasは他の3Dオブジェクトと扱いが違うよ
どこにあるかわからなくなったらヒエラルキーのところで見たいやつをダブルクリックすればいい
0077名無し@キムチ
垢版 |
2017/12/25(月) 19:25:14.15ID:fZ1/1f81
どんなマテリアルでも貼れるようになったと思ったのですが、ピンクのマテリアルが上手く貼れなません。
ピンクはマテリアルも何もない時に表示されるnotingの色なので、何か特別なものなのでしょうか?
よろしくご教授のほどお願いいたします!!!!!
0078名無し@キムチ
垢版 |
2017/12/25(月) 22:35:14.78ID:fZ1/1f81
少し場違いな質問かもしれませんが、CrazyTalkAnimatorでつくったキャラをunityに取り込んで、2Dゲームのキャラとして使うことはできますか?
ご教授おねがいします。
0081名前は開発中のものです。
垢版 |
2017/12/25(月) 22:44:20.45ID:ZNYlD8z4
正しくは、ご教示ねがいます、なんだけど最近の誤用率の高さをみるとこの言葉なくなりそう…
0082名無し@キムチ
垢版 |
2017/12/25(月) 23:10:31.51ID:fZ1/1f81
>>80
くすんだようなピンクのマテリアルなら貼れます。
真ピンクは貼れません。
でもくすんだようなピンクだとギャルに喜ばれそうにないので、そこが悩みです。
できれば鮮やかな真ピンクのほうがいいです。
ご教示おねがいします!!!
0084名前は開発中のものです。
垢版 |
2017/12/25(月) 23:21:58.55ID:WYjEkbDZ
UIのボタン入力を受けてデバッグにログ出せるようになったけど、

UIのスライダーを動かして、その値をデバッグログに出力するのができない・・・

スライダーの値はどうやって受け取れば良いのですか?
0085名前は開発中のものです。
垢版 |
2017/12/25(月) 23:32:20.80ID:WYjEkbDZ
ボタンの時と同じく、イベントを受け取りたいスクリプトを載せたオブジェクトを指定して、
そのオブジェクト内のメソッドを選択しているのですが、
メソッド内で関数名(float valuse)で受け取っても、valueの中身が0から動きません

スクリプト内で
using UnityEngine.Events;
using UnityEngine.UI;
は最初に宣言しています
0087名前は開発中のものです。
垢版 |
2017/12/26(火) 00:30:03.34ID:ef3cEapS
>>88
ありがとうございます!

実は回答いただく前に色々試したところ、
2つの解決法を見つけました!

@UIの方で、ValueChangeを渡すメソッドを選ぶ時に
一覧の中にある「メソッド名(float)」を選んではダメで、
一覧の一番上の方にある、「メソッド名」のみのを選ぶと、
スクリプトでは引数にvalueがfloatで渡されるようです・・・

スクリプトの方は、「メソッド名(float a)」で定義しているので、
aにvalueが入ってきました!

Aスクリプトの方で「メソッド名(slider)」で定義して、
UIの方で、ValueChangeを渡すメソッドを選ぶ時に、
渡すオブジェクト(slider)も指定してやると、
スクリプトでは引数に指定したsliderが渡されるようです

スクリプトの方は、「メソッド名(slider s)」で定義しているので、
「s.value」で、valueがfloatで得られました!

コンポーネントをゲットする方法は、
Aに近い感じですか??
0089名前は開発中のものです。
垢版 |
2017/12/26(火) 00:39:16.44ID:ef3cEapS
オブジェクトobjAに載せたスクリプトscrA
public void OnSliderX(Slider sliderX){
 float x = sliderX.value;
 Debug.Log (x);
}

public void OnSliderY(float a){
 float y = a;
 Debug.Log (y);
}

UIスライダーSliderXにおける、OnValueChanged(Single)
スクリプト:scrA
オブジェクト.メソッド:objA.OnSliderX
渡す値:SliderX(Slider)

UIスライダーSliderYにおける、OnValueChanged(Single)
スクリプト:scrA
オブジェクト.メソッド:objA.OnSliderY ・・・リスト最上段のDynamic floatの直下
渡す値:欄なし


ちなみに、リスト途中の
オブジェクト.メソッド:objA.OnSliderY(float) だと
渡す値:0 ←変数を指定できず、数値(固定値) になるようで、失敗します!
0091名前は開発中のものです。
垢版 |
2017/12/26(火) 00:53:20.70ID:ef3cEapS
>>88
やってみました!
こんな感じでしょうか?

B引数は指定せずに、メソッドを呼び出して、
メソッド内で、GetComponent<Slider>().value から取得してみました!


public void OnSliderZ(){
 float z = GameObject.Find("SliderZ").GetComponent<Slider>().value;
 Debug.Log (z);
}

UIスライダーSliderZにおける、OnValueChanged(Single)
スクリプト:scrA
オブジェクト.メソッド:objA.OnSliderZ
渡す値:欄なし

@AB、どれも動作はするようです
一番簡単なのはAかも・・・
(当初やりたかった、floatで引数を送れるから)
0093名前は開発中のものです。
垢版 |
2017/12/26(火) 01:02:14.43ID:/Bbw4vw9
>>91
getcomponentはあってるけど呼び出し元はどこでもいい
どこからでも呼び出せるため汎用性が高く使用頻度が高いので86が示してくれた

何で色んなやり方があるのかを考えずに動けばいいとしか考えてないから一向に技術が向上せず質問ばかりになる
動けばいいスタンスで前へ進むことも時には必要だがあまりにも基礎的な部分が疎かに見えるよ
0094名前は開発中のものです。
垢版 |
2017/12/26(火) 01:05:51.44ID:/Bbw4vw9
1時間で自己解決するような内容をわざわざ書き込むんじゃねぇ
つうか半年以上Unity触ってんだよね?
それでgetcomponentがよくわかってないってもうちょっと頑張れよって思う
下手すりゃ初日で取り入れるような内容だぞ
0095名前は開発中のものです。
垢版 |
2017/12/26(火) 01:27:46.39ID:aR7RHPYW
まぁ、喉元過ぎればどうでもいいやり方でも構わんが、
毎回コップの使い方忘れて憶える気すらなくて人に聞くってのはどうかと思う
0097名前は開発中のものです。
垢版 |
2017/12/26(火) 08:27:49.72ID:ef3cEapS
>>94
???
UIを触り始めたのは、3日前から
確かに、Unity始めたのは2017になるギリギリ前のUnity 5.6からだけど
0098名前は開発中のものです。
垢版 |
2017/12/26(火) 08:31:50.53ID:ef3cEapS
聞かないで試行錯誤しても効率が悪いから、質問スレに聞いてるんだけどね
実際、自己解決した方法は汎用性が低い方法で、正解まで辿り着けなったし

UI回りは、他のゲーム空間に配置するオブジェクトとだいぶ勝手が違うし
ネットで引いてもなかなか体系的に書かれているところ少なくない?
(ボタンは多いけど、スライダーとかトグルはあんまりない)
0099名前は開発中のものです。
垢版 |
2017/12/26(火) 08:50:28.37ID:e7BUlWI3
>>98
マジレスすると、UI的には>>87の@が正解な

FindやGetComponentは重いから出来るだけ呼び出す回数を少なくするべきだし、必要でないところで使うのは好ましくない
今回のケースで必要だとすればスクリプトから動的にイベントハンドラを設定する場合ぐらいだろう
汎用的でどこからでも呼べるから多用するってのはstaticおじさんと同じ思想だからやめとけ
0100名前は開発中のものです。
垢版 |
2017/12/26(火) 10:01:11.29ID:/Bbw4vw9
UI的に正解w
そんな意味不明なアドバイスでこの程度のパフォーマンスを気にするの?
forはi--で処理したほうが良いとか言ってそう…
0102名前は開発中のものです。
垢版 |
2017/12/26(火) 12:45:52.42ID:hFK9SmSE
74です

>>75-76
どうもです

確認してみたら、右上にでっかいキャンバスありました
シーンビューの範囲からはみ出ていたようです

UIは解像度に合わせてピクセル単位で入力していたので、
100ピクセルの位置が、100Unitになっていました

要は、スケールが違うから、カメラの撮影範囲外にいたんですね
他の3Dオブジェクトは-10〜+10Unit単位で配置されていたので

UIと他のオブジェクトで、配置する座標基準が違うんだったら、
シーンビューはUIと他のオブジェクトで分かれていたほうが操作しやすい気がする
どちみちゲームビューじゃないと合成されて表示されないなら
0103名前は開発中のものです。
垢版 |
2017/12/26(火) 12:51:31.00ID:hFK9SmSE
もう1つ質問です

uGUIのButtonは、各々をマウスで押すのが普通だと思うんですが、
カーソルで複数から選択して、Enterで押す機能は、
デフォルトの機能で用意されていますか??

インスペクターのNavicationでVerticalを選んでから、
Visualizeすると、各ボタンを結ぶ動線の矢印が表示されるから、
キー操作でのフォーカス移動できそうに見えるんですが、
テストプレイしても、キー操作を受け付けません
0104名前は開発中のものです。
垢版 |
2017/12/26(火) 16:38:15.98ID:yq5adPSI
>>98
頭おかしいんとちゃうか?
ここで質問する方が遥かに効率悪いぞ?馬鹿なの?死ねよ

例えば>>102-103の内容なんて質問して5時間経過した今も返答はついていないが
ググれば5分〜10分でわかるわけだ
20分もあれば1つの方法以外にも沢山方法あることも知れて全部自分の物にできるわけだが?

スライダーやトグルの説明もクソ沢山あるしな
ねえ?馬鹿なの?
ググり方が下手過ぎてANDやOR検索できない子なの?
死ねよ
0105名前は開発中のものです。
垢版 |
2017/12/26(火) 16:42:11.91ID:94NCEA31
>>98
効率を求めて宿題丸写し繰り返してりゃ、学力は全くつかないのと同じ
だから周りの人間が普通についてこれるレベルにすらついてこれない

>>99
ValueChangeは自動でリスナーの設定してるだけだった筈
確か、リスナー設定のタイミングが指定出来ないからScriptableObjectから
設定ロードしたりすると詰む
だから、StartかAwakeでGetComponentして、自分でリスナーセットするか
メンバにアクセスする方が汎用性が高いし都合がいいんだよ
0106名前は開発中のものです。
垢版 |
2017/12/26(火) 16:44:18.50ID:yq5adPSI
>>98
あと自作してるのに効率って何?
手本や人から教わらないと自作できないの?
それって自作というより盗作や真似じゃねーの?
コピーや真似してるだけなのに自作だと思い込んでるの?
自作は試行錯誤の連続

お前が今どんな物作ってるのか知らないが
見た目が綺麗なユニティちゃんがグリグリ画面走ってる物作っていても
インベーダーゲームやマリオ1やブロック崩しやテトリスを最初に作った連中より劣ってるよ
彼らは作り方を誰にも教わらずに自分でやり方に気づき形にした人達だからな

プログラムが置いてあって弄っていたら、あれ?これこうしたらゲームみたいの作れるんじゃね?
と自分で試して誰にも聞かず参考本なんてものも見ないで作ってるからな
そしてそれが本当のゲーム作りだ
わかったか!盗作やろうの勘違いやろう!
おめえみたいのはアセット組み合わせてやってろや!
0107名前は開発中のものです。
垢版 |
2017/12/26(火) 16:49:30.04ID:/Bbw4vw9
>>102
スケールが違うから撮影範囲外に居るってのは違う
canvasはUIに特化するためにそういう仕組みになってる
3D空間上に居たら最前面に表示すべきUIとモデルの前後関係を注意しなければならなくなる
ゲームによってはカメラが移動しまくるからそれに合わせてUIの座標を追従させるとか馬鹿らしいだろ?
だからオーバーレイ表示する仕組みになってる

ただUIが3D空間上にいてほしいこともある
キャラクタのHPバーをそのキャラの頭上に表示させるとかね
そういうタイプのcanvasも設定できる
名称は忘れた、カメラオーバーレイと対になってるやつ
0109名前は開発中のものです。
垢版 |
2017/12/26(火) 16:54:39.83ID:/Bbw4vw9
スライダーの件は1も2も3も別にどれも間違いでもない
実現したいことが実装できたならまぁそれでいい
ただ今後ちょっと仕様が異なるものが必要になったとき1つの手法しか知らなければまた質問する羽目になる
だから色んな手法を知ることは大事だしUI的に1が正解なんて結論には絶対にならない
スクリプトからスライダー生成する必要が出てきたらUI的に不正解な手法を取らなければならないとかエンジンとしてどうなんだって話
0110名前は開発中のものです。
垢版 |
2017/12/26(火) 17:41:22.57ID:Rpuwe1xT
>>98
馬鹿だなぁ
公式がチュートリアルやサンプルで説明済みだから、ネットで2番煎じのネタは
基本的な部分が重複しないんだよ無能
0111名前は開発中のものです。
垢版 |
2017/12/26(火) 18:26:54.92ID:/Bbw4vw9
そもそもボタンの記事があるならスライダーの記事なんて無くてもマニュアル見れば後は大体分かると思うけどね
パーツ全部個別に説明が必要な設計ってオブジェクト指向とはなんだったのかってなるし

canvasは公式に説明あるし結構深く解説してるところもいっぱいある
というかスライダーの記事だって山ほどあるでしょ
コレで少ないって言うなら何も作れる気がしないわ
0112名前は開発中のものです。
垢版 |
2017/12/26(火) 18:36:04.71ID:hFK9SmSE
>>107
なるほど!

UIは他のオブジェクトと違ってゲーム空間に置いているというよりも、
キャンバスごとカメラのレンズ前に貼り付けている感じですね

EventSystemで、EventSystem(Script)というコンポーネントのFirstSelectedを指定してあげたら、
カーソルで他のボタンへ移動したり、Enterで押せるようになりました!

最初の状態では、UIにフォーカスが降りてないからキー入力に反応しないみたい
0113名前は開発中のものです。
垢版 |
2017/12/26(火) 18:39:08.06ID:hFK9SmSE
NavigationのExplicitを選んでみたら、
カーソルを押した時に、次にどのUIへ行くかを、上下左右ごとに指定できると知って驚愕!
便利ですね〜

UI関連が話題になっていて勉強になります!
0115名前は開発中のものです。
垢版 |
2017/12/26(火) 19:19:33.08ID:yq5adPSI
公式どころか個人がやってる初心者講座サイトの1つでもやってれば普通に分かっていておかしくない内容だよな。
どんだけ何もやってない怠けものだよコイツって感じ
0116名無し@キムチ
垢版 |
2017/12/26(火) 19:58:50.02ID:5fo0vrRf
ごく初歩的な質問ですが、何もさわってないのに、たまにシーン内でのオブジェクトの位置が変わっていることがあるのですが、それは何故でしょうか?
同じく何もしないのに、コンポーネントが外れていたり、インスペクターの値が変わっていることもあります。
これは非常に困るので、位置や値が自分で変えるまでは絶対に変わらない対処法をご教示おねがいいたします!!!
0117名無し@キムチ
垢版 |
2017/12/26(火) 20:03:01.61ID:5fo0vrRf
なお>>113は当方ではないですよ。当方、無意味なコテ外しはしませんw
0118名前は開発中のものです。
垢版 |
2017/12/26(火) 20:26:13.27ID:O9PscLer
シーン遷移時に引き継ぎたい変数をどの手段から選べばいいか迷ってるんですけど、

1 static変数として持つ
2 ScriptableObjectを作ってそこに一時保管しておく
3 dontdestroyで変数の入ったスクリプトがアタッチされているオブジェクトを壊さず持っていく
4 外部のdb等に一時保管しておく

辺りで迷ってるのですが、ケースバイケースだとは思うのですがどれがいいのかアドバイスお願いします。
1 なるべくstatic使わない方が初心者には良い とたまに聞きます。
  似た名前のローカル変数を複数使っているので混乱する可能性もあるかなと

2 基本的に変動しない小さいマスターデータをdb代わりに使う事が多い と見ました
  こういった使い方には適さないのかもと迷いました

3 普通のゲームと同じくいくつかのシーンをループして進めていくのでオブジェクトが被らないようにシングルトンにする手間や
  処理は一切入れず変数入れとしてこの処理をするならScriotbleObjectでいいのかな?と思ったり

4 形式にもよるのでしょうが一時的な変数をイチイチ外部に書き出すのはどうなのかと
0120名前は開発中のものです。
垢版 |
2017/12/26(火) 21:27:04.89ID:ef3cEapS
>>111

ボタンは引数なしで呼び出すだけだから簡単だけど、
スライダーは引数をどうやって受け取るかがわからなかったのでした

少なくとも公式のオンラインマニュアルからは探せず・・・
UIのインスペクターのリストをよーく見たら、
引数ありのメソッドと同名の、引く数なしのメソッドが上の方に見つかって解決したけど

>>99

やっぱり、リスト最上段のDynamic floatの直下にあるところをみると、
コレ(@)がUnity側で用意した機能なんでしょうね・・・
0121名前は開発中のものです。
垢版 |
2017/12/26(火) 21:32:11.65ID:ycBgqB9O
>>118
何が消えてOKで、何が消えたら不味いのか、切り分けが分からない
例えば、セーブ/ロード付けるなら、シーン移動時にセーブとロード
するから結局同じ事じゃないの?
0122名前は開発中のものです。
垢版 |
2017/12/26(火) 21:36:26.13ID:ef3cEapS
>>118

個人的には「3」を使ってます!

最初のLoad用のシーン0でフラグ管理用のオブジェクトを「DontDestroy」設定して、
その後はシーン1へ遷移して、以降はシーン0へは戻りません
(戻ると、「DontDestroy」設定を繰り返してしまうので・・・)

フラグ管理用のオブジェクトに載せたスクリプト内では、Start()内で、
ゲームを通してシーン間で共有する変数を全て「public」で宣言して初期値設定しています

そして、他のシーンの他のオブジェクトから、適宜呼び出して参照や代入して共有してますね
0123名前は開発中のものです。
垢版 |
2017/12/26(火) 21:40:47.37ID:ef3cEapS
>>121の言うように、
セーブありのRPGみたいな感じであれば、シーン変更前にセーブして、
シーン変更後にロードでも良い気がしますね

ゲーム終了後も保持したいなら、やはり外部保存だと思います

自分のは基本パスワード式のACTなので、
セーブシステムがないので、ゲーム内でのみ保持しています

パスワードの入力によって、フラグの初期値を変更して、
その後にゲーム開始となるようにしていますね
(まっすぐゲームスタートした場合は、全フラグを初期値で開始)
0124名前は開発中のものです。
垢版 |
2017/12/26(火) 23:19:01.53ID:V8TVTato
>>118
言うまでもないが可能不可能で言えばどれでも出来る
と言うか、シーンロードでDestroyされないヒエラルキーに依存しないものならなんでも保持は可能

適不適で言うなら
1.staticである必要性はない。staticにすることによる弊害の方が多いため不適
2.ScriptableObjectは実行時はReadOnlyなデータのバリエーションを扱うもの。使い方が間違っているため当然不適
3.揮発性の情報ならこれが最適※
4.不揮発性の情報ならこれこれが最適※

※揮発性情報は意図せずプロセスが死亡した場合に消えても良いもの、不揮発性情報はプロセスが死亡しても残るべきものとする
0125名前は開発中のものです。
垢版 |
2017/12/26(火) 23:39:55.98ID:ef3cEapS
staticにする必要性ってどこにあるんだろう??

FCやSFCで言うところの、RAMじゃなくてROM的な機能か?
0130名前は開発中のものです。
垢版 |
2017/12/27(水) 01:16:54.26ID:2+M/n1Lm
ROM的な機能は、ScriptableObjectの方だったか

全オブジェクトからアクセスできる関数(メソッド)作成はStaticが良いかもしれない

どのスクリプトからでも
@RGB→HSL変換できるメソッド:RGBto.HSL(R, G, B, out H, out S, out L)
ARGB→HSV変換できるメソッド:RGBto.HSV(R, G, B, out H, out S, out V)
を作ってみた
0131名前は開発中のものです。
垢版 |
2017/12/27(水) 01:19:10.80ID:2+M/n1Lm
public static class RGBto {
 public static void HSL(int R, int G, int B, out int H, out int S, out int L){
  int Max = Mathf.Max (R, G, B);
  int Min = Mathf.Min (R, G, B);
 if (Max == Min) {
  H = 360;
 } else if (G == Max) {
  H = 60 * (B - R) / (Max - Min) + 120;
 } else if (B == Max) {
  H = 60 * (R - G) / (Max - Min) + 240;
 } else {
  H = 60 * (G - B) / (Max - Min);
  if (H < 0) H = H + 360;
 }
 if (Max == 0 || Min == 255){
  S = 0;
 } else {
  S = 255 * (Max - Min) / (255 - Mathf.Abs(Max + Min - 255));
 }
  L = (Max + Min)/2;
 }
0132名前は開発中のものです。
垢版 |
2017/12/27(水) 01:19:30.81ID:2+M/n1Lm
 public static void HSV(int R, int G, int B, out int H, out int S, out int V){
  int Max = Mathf.Max (R, G, B);
  int Min = Mathf.Min (R, G, B);
 if (Max == Min) {
  H = 360;
 } else if (G == Max) {
  H = 60 * (B - R) / (Max - Min) + 120;
 } else if (B == Max) {
  H = 60 * (R - G) / (Max - Min) + 240;
 } else {
  H = 60 * (G - B) / (Max - Min);
  if (H < 0) H = H + 360;
 }
 if (Max == 0){
  S = 0;
 } else {
  S = 255 * (Max - Min) / Max;
 }
  V = Max;
 }
}

Hを求めるところはもっとまとめられるかも・・・
Hのみ0〜360(360で色相未定義)
RGB,SLVは0〜255
0134名前は開発中のものです。
垢版 |
2017/12/27(水) 03:01:38.22ID:4kYoBCMG
また質問なんですけど、
シーン遷移した後って前シーンからdontdestroyで持ってきたオブジェのスクリプト内で
getcomponentってできないですか?
gameobject.findで指定したオブジェクトを見つけるまでは大丈夫なのですが
ゲットコンポーネントするとNullReferenceExceptionが帰ってきます
同じシーン内に作ったなんらかからならちゃんと動くのですが
0135名前は開発中のものです。
垢版 |
2017/12/27(水) 03:07:33.07ID:4kYoBCMG
もしかするとfindも失敗してるのかもしれませんが、
sceneをパスに指定するようなことが必要になるのでしょうか?
dontrestroyしたオブジェクトはdontdestroyの子みたいな表示になりますし
共通シーン内でしか受け渡しできないとかなのでしょうか?
0136名前は開発中のものです。
垢版 |
2017/12/27(水) 12:43:41.61ID:YC5nHwtt
全部自作した奴が偉い君は
ガワだけ張り替えて大当たりするようなソシャゲが
天下取ってる現状に発狂してそう
■ このスレッドは過去ログ倉庫に格納されています

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