【3Dゲームエンジン】Unity質問スレッド22 [無断転載禁止]©5ch.net
■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。
2016/01/11(月) 01:24:43.29ID:r4suKLTgWindows/Mac用。JavaScript/C#といった汎用言語を使用できるのが特徴です。
フリー版で開発したゲームは個人・法人を問わず追加のロイヤリティーなしで販売できます。
プラットフォームサポートはiPhone/iPod Touch/iPad、Mac、PC、Web、Wii、Xbox360、Android、PlayStation 3、PlayStation 4、PS Vita他
次スレは>>970を踏んだ方が建てること。ダメなら>>980か>>990が建てて下さい。
■本スレ
【3Dゲームエンジン】Unity総合スレッド27 [転載禁止](c)2ch.net
http://peace.2ch.net/test/read.cgi/gamedev/1441891966/
■Unity 2ch Wiki(まとめ、過去ログ、リンク集)
http://www24.atwiki.jp/unity2ch/
●リンク
・Unity(日本公式サイト)
http://unity3d.com/jp
・ユーザーガイド
http://docs.unity3d.com/ja/current/Manual/UnityManualRestructured.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質問スレッド21
http://peace.2ch.net/test/read.cgi/gamedev/1447775596/
0681571
2016/02/13(土) 15:58:41.99ID:4vB01QrvonCollisionEnter使って、お互いの座標とcolliderサイズから位置調整する形で落ち着きました。
スレの方法を試して見たけど、数フレームのめり込み自体は発生するので >>592 だと納得しました。
アドバイスありがとうございました。
レトロな2Dゲームも作れるんだろうけど、Unityは3D向けな印象。
0682名前は開発中のものです。
2016/02/13(土) 16:02:25.81ID:RVXwk8Hf自己解決、もう一回自らをprefab化することでmissing解消
その上でメニューからGameObject→Break Prefab Instanceし
prefabを改めて消してきちんと切り離すことが出来ました。
0683名前は開発中のものです。
2016/02/13(土) 16:05:12.84ID:CO7unFEl元のプレファブを削除したときになるから
それ自体をプレファブにすれば戻せるんじゃなかろうか
試しに空のGameObjectを作ってプレファブにして、
プレファブ削除したら同じようなことになるはず
で、その状態のHierarchyのをプレファブにすれば復活はできると思う
あと、元プレファブないのが複数Hierarchyにあるなら修正は注意しないといけないかな
0684名前は開発中のものです。
2016/02/13(土) 16:06:25.87ID:CO7unFEl0685名前は開発中のものです。
2016/02/13(土) 16:13:07.74ID:RVXwk8Hfご指摘のとおりでしたありがとうございます!
0686名前は開発中のものです。
2016/02/13(土) 23:44:21.79ID:o3tkHv6O設計思想みたいなモノは
やっぱどこかに残るよね
0687名前は開発中のものです。
2016/02/14(日) 00:00:58.21ID:jXhVptvzGameObject.FindGameObjectWithTag(
0688名前は開発中のものです。
2016/02/14(日) 00:06:52.64ID:jXhVptvzGameObject.FindGameObjectWithTag("Player")でプレイヤーを取得、これが今までまったく問題なく出来ていたのに
あるスクリプトファイル一つだけが、なぜかその方法で取得できなくなっていた
それ以外の全てのスクリプトファイルからはちゃんと今までどおり取得できる
で、試しにtestタグを新設して、Playerタグをそれに切り替えたら普通に
GameObject.FindGameObjectWithTag("test")なんて感じで取得できる
仕方ないからいったんUnityとVC落として気分転換して、再度立ち上げて実行したら
ちゃんとGameObject.FindGameObjectWithTag("Player")で取得できていた
これの直前にやったことといえば、3Dモデルとでもシーンだけ含まれたアセット落としたのと
新しいAnimatorControllerとAvatarMaskを作ったぐらい
まあ解決したっぽいからいいんだけど、ちょっと納得いかない現象でした
皆さんはこれと似たようなことはありましたか?
あったとしたら、どう解決しましたか?
0689名前は開発中のものです。
2016/02/14(日) 02:39:42.70ID:AFeuiLuV双方にメリットのあるサイト
http://www.game-smartphone.com/
個人のアプリ開発者が集まって作る新しいプラットフォーム
http://houkago-no.appspot.com/
アンドロイダー
ユーザーと公認アプリ開発者が一緒になって情報発信していくアンドロイドアプリ情報サイト
https://androider.jp/
0690名前は開発中のものです。
2016/02/14(日) 08:37:29.42ID:GA0JRD4a黒い画面から進まない
ナイスブラックって感じっす
もうBlenderしよ…
0691名前は開発中のものです。
2016/02/14(日) 16:03:09.01ID:jsVLIggRhttp://ks.c.yimg.jp/res/chie-que-1066/1/066/846/865/i320
このようなチップセットで一番左上の侍の上下左右移動アニメを作りました。
キャラクターのゲームオブジェクトを流用し、忍者のアニメも作りたく思います。
このとき、animationとanimatorは流用して、スプライトのみ変更ということはできるのでしょうか。
もしかして、上記上げた画像のキャラクター8体作成しようとすると
animator 8パターン
animation 8*4=32パターン
用意しないといけないのでしょうか。
例えばここに攻撃モーションを追加するとなった時に8パターンのanimatorを全部編集して……というのはできれば避けたく思います……
良い知恵をおかしいただけませんでしょうか。
0692名前は開発中のものです。
2016/02/14(日) 16:21:06.82ID:MV7IrGrzanimationにつけるスプライトパターンは、Unity的にはclipって名前
AnimationClipの動的な差し替えは可能
clip自体の動的な生成は出来ない…はず
UnityEditor機能だから
0693名前は開発中のものです。
2016/02/14(日) 16:41:28.89ID:BJfxAvBiAnimatorについてはAnimatorOverrideControllerを使う、というのが大体の作法だろう。
http://docs.unity3d.com/ja/current/Manual/AnimatorOverrideController.html
http://docs.unity3d.com/ja/current/ScriptReference/AnimatorOverrideController.html
2Dの方は俺はあんまりよくわからないのでアレなのだが
EditorScript書けば量産自体は可能だろうと思う。
例えばこのページ
ttp://qiita.com/RyotaMurohoshi/items/5cb865c23a50055cf92f
もっとも結構古い記事なのでそのままは使えないかもしれない。
Editor系のクラスは割とざっくり変更されたりするのでカスタムエディタースクリプトも頻繁な見直しを強いられる。
Clip自体の動的な生成も少なくとも3Dでは出来るんだが2Dのはわからん。
けど出来ない理由はないと思うがな。
http://docs.unity3d.com/ScriptReference/AnimationClip.SetCurve.html
0694名前は開発中のものです。
2016/02/14(日) 16:42:52.56ID:lypsNsp30695名前は開発中のものです。
2016/02/14(日) 16:44:29.60ID:MV7IrGrz出来ないもんだと思ってた
0696名前は開発中のものです。
2016/02/14(日) 16:55:09.51ID:MV7IrGrzここも確か個人的に通った道で、
その先さんざん調べまくってどっかでUnityEditorが必要な場面が出てきて諦めた記憶がある
0697名前は開発中のものです。
2016/02/14(日) 17:05:01.55ID:BJfxAvBi確かにあれに直接いれようとするとEditorになっちまうんだ。
0698名前は開発中のものです。
2016/02/14(日) 17:13:33.04ID:MV7IrGrzそれ出来ないと表示中に差し替えできなくなっちゃうし
最終的には、↓の65ページ目あたりを参考にした
http://japan.unity3d.com/unite/unite2015/files/DAY2_1400_room2_Ando.pdf
0699名前は開発中のものです。
2016/02/14(日) 17:16:55.71ID:MV7IrGrz0700691
2016/02/14(日) 17:47:05.97ID:jsVLIggRAnimatorOverrideControllerにたどり着きましたのでこちらでアニメーションを変更させようと思います。
お知恵をお貸し頂き、ありがとうございました
0701名前は開発中のものです。
2016/02/14(日) 20:49:32.29ID:MV7IrGrzhttp://docs.unity3d.com/ja/current/Manual/script-SelectableTransition.html
上記「Animation」で設定してもスプライトが表示されず、悩んでいます。
表示方法をご存知のかたいましたら、ご教示お願いしますm(_ _)m
0702名前は開発中のものです。
2016/02/14(日) 20:59:07.81ID:chGNXPM5再生すると、それに付随するカメラで何度も以下のエラーが出る
UnityEngine.Camera:Render()
UnityStandardAssets.Water.PlanarReflection
:RenderReflectionFor(Camera, Camera)
(at Assets/Standard Assets/Environment/Water/Water/Scripts/PlanarReflection.cs:200)
このエラーの正体は何ですかね?再生した後console見ると、何百とこのエラーが出現する
0703名前は開発中のものです。
2016/02/14(日) 21:14:30.25ID:ZA1oCLSd根本的に何か勘違いしてないか?
とりあえずエスパーしてみるが…
uGUIでスプライトアニメーションを表示し、それをボタンとして動作させるのなら
まずuGUIでスプライトアニメーションを表示させる仕組みを実装する必要がある
uGUIでスプライトを表示するのはImageコンポーネントだが、スプライトアニメーションをさせる仕組みは標準では存在しない
>>702
Assets/Standard Assets/Environment/Water/Water/Scripts/PlanarReflection.csの200行目周辺で何をしてるか確認すればいいと思うよ
0704名前は開発中のものです。
2016/02/14(日) 21:17:20.36ID:MV7IrGrzまじですかorz
ボタンを作って、TransitionをAnimationにして、「Auto Generate Animation」をクリックすると
中身が空っぽのステートマシンが出力されるのですが…
これがAnimationじゃないとすると、どういう用途のものなんでしょうか
0705名前は開発中のものです。
2016/02/14(日) 21:48:52.09ID:chGNXPM5ショートムービーが作りたく、GAMEで再生してるものを
キャプチャーして、アフターエフェクトかプレミアに
取り込んで、あとでテロップなどを入れて完成させたいです。
録画か連番キャプチャーでおススメはありますか?
0706名前は開発中のものです。
2016/02/14(日) 22:19:48.46ID:ZA1oCLSdそれはAnimationControllerそのものだからAnimationClipをImage.spriteを毎フレーム書き換えるように作れば勿論スプライトアニメーションとして動くよ
ただUnityでのスプライトアニメーションの仕組みは基本的には2Dで使われる前提で用意されたものなのでSpriteRenderer.spriteを書き換える様な形で生成される
SpriteRendererはそのままではuGUIの世界に持って来れないからそのままでは表示されない
もし2D用のAnimationClipをそのまま使うなら
まずSpriteRendererをアタッチして2Dのスプライトアニメーションを動かしておいて、適当なスクリプトで
void Update(){
image.sprite=spriteRenderer.sprite;
}
とかやれば一応アニメーションは表示されるはず。効率の良い方法でないからお勧めはしない
俺なら2D用のスプライトアニメーション(AnimationClip)をuGUI用のスプライトアニメーションに変換するエディタスクリプトを書くかなぁ
0707名前は開発中のものです。
2016/02/14(日) 22:29:07.10ID:b6sa9rdO遠いものほどZ軸に遠くに配置し、スケールを大きくすることで、
疑似的な3D感を出せるのですが、毎回スケールを調整するのが手間なので、
どんなZの位置になっても、カメラから見て元の大きさになるスケールの値の
計算方法を教えてほしいです。
0708名前は開発中のものです。
2016/02/14(日) 22:33:58.22ID:ZA1oCLSdこれの改造で行けると思う
http://docs.unity3d.com/ja/current/Manual/DollyZoom.html
0709名前は開発中のものです。
2016/02/14(日) 22:37:43.19ID:MV7IrGrzなるほどSpriteRendererがuGUIと繋がらないんですね…
ありがとうございます
もうSpriteでOnMouseDownでもいいかなぁ
ご教示いただいたのも含めて、代替方法悩んでみます。ありがとうございました
0710名前は開発中のものです。
2016/02/14(日) 23:02:17.41ID:MV7IrGrzすみませんもう一点だけ質問させて下さい
UI上でSpriteを管理するためにはImageを使うということはわかったのですが、
同じようにUI上でParticleを使いたい場合、適切なコンポーネントはあるのでしょうか。
RPGのステータス画面で魂っぽいものをParticleで出しており、まだ着手していないのですがこれもボタン化しようとしています。
0711名前は開発中のものです。
2016/02/14(日) 23:30:31.65ID:BJfxAvBi基準になるスケールがs0としてその時のカメラからの距離のZ軸分がz0として現在のZ距離がz1とすれば
その地点で見かけの大きさが等しくなるためのスケールの値s1は
s1=s0*z1/z0
になる。
0712名前は開発中のものです。
2016/02/15(月) 00:53:11.79ID:WVKoljbQ流石にパーティクルはuGUIじゃ無理なので一旦RenderTextureに描画してRAWImageに表示かね
0713名前は開発中のものです。
2016/02/15(月) 01:06:24.95ID:lEb1B1aG最近Unity触ってないから詳しくは忘れたけど、キャンパスの奥行き位置のルールを決める設定があって
そこを弄ればGUIだろうがイメージだろうが3Dモデルだろうがパーティクルだろうが手前に表示出来たはず
オーダーレイヤーの管理が少し面倒になるけどね
0714名前は開発中のものです。
2016/02/15(月) 02:02:10.05ID:jG8XJvHUありがとうございます
RawImageについて調べてみます
>>713
ありがとうございます
最悪それでやろうと思ってました…
多重でサブウインドウ開く場合は動的にプライオリティ変更する感じで
0715名前は開発中のものです。
2016/02/15(月) 20:20:23.54ID:bslrDr3A平面1枚の巨大なNavMeshから大量のNavMeshObstacleで好きな形に整えてみましたが
NavMeshの頂点が無駄に多くなってしまいました(直線なのに途中に頂点が多数乗っている状態)
このメッシュを最適化する方法ってありますでしょうか?
0716名前は開発中のものです。
2016/02/16(火) 01:33:03.02ID:UYXvXO0bリアルタイムじゃなくて良いならある、計算幾何学系の本読むとよいかも
0717名前は開発中のものです。
2016/02/16(火) 09:51:39.44ID:/t0eiuWkナビメッシュの頂点を操作する方法はあるんでしょうか?
リファレンスを見ても一度作ったメッシュに手を加える方法が見つからないのですが…
0718名前は開発中のものです。
2016/02/16(火) 10:22:58.62ID:8AOr0Xt8NavMeshがどういう物かも良く知らんくせに何故頂点が無駄に多いと思うんだよw
0719名前は開発中のものです。
2016/02/16(火) 13:48:26.73ID:lHM7esNH何故かHumanoidリグ版にCharacter Controllerを付けると接地せず微妙に浮く…
Genericでは特にそういった事は無さそうなんですけどこれは何が原因なんでしょうか
0720名前は開発中のものです。
2016/02/16(火) 18:23:49.12ID:ZJyPriQcUI>panel>スクリプトでプレハブを並べる、という流れです。(5x5でプレハブを並べたアイテムインベントリ)
プレハブはPanelの子要素として並べています。
PC上ではPanelに合わせて1個あたりでプレハブのサイズが拡大されるのですが実機(Android端末)ではプレハブを作成したときの小さなサイズのままです。
なぜこうなってしまうのかわからず、手がかりをいただければと書き込みさせていただきました。
質問が拙いのですが何か「これじゃね?」的なものありましたらよろしくお願いします。
0721名前は開発中のものです。
2016/02/16(火) 18:58:35.83ID:qVknYHUhCanvasの設定とか
0722名前は開発中のものです。
2016/02/16(火) 19:23:16.85ID:ZJyPriQcCanvas Scaler > Scale With Screen size , 1600*900 , Expand ,Peference Pix Per 100
その他Canvasにアタッチされたコンポーネントは初期値のままです。
Canvas>Panelの子として複製されるプレハブはUI>Imageを元にしたもので、アイテムイメージ表示のスクリプトをアタッチしてあるだけのものです。
Panelはプレハブを並べ、アイテムをドラッグしたりするスクリプトをかいてあります。
YoutubeのPiDiさんという方のチュートリアルを動画を見つつPart5まで打ち込み、実機での動きを確認してる状態です。
0723名前は開発中のものです。
2016/02/16(火) 23:00:35.64ID:Qd5CqjhQこれを片方にまとめたいのですが、片方にまとめてもうまく動作しません。AndroidManifest.xml側でパスの編集とかをしないといけないのでしょうか?
Lobiを適用すると変な階層にAndroidManifest.xmlがあるため同じ経験をした方はご教授おねがいします。
0724名前は開発中のものです。
2016/02/17(水) 15:38:37.29ID:l3sG+XyUprivate string[] text = new string[100];
void Start()
{
text = txt.text.Split( '\n' );
}
Inspectorでtxtにテキストファイルを入れて
text配列に改行を一区切りして文章を入れたいんだが
ひらがなが入らない…
ひらがなや漢字を入れる方法を教えてください
0725名前は開発中のものです。
2016/02/17(水) 15:47:55.32ID:w2r2iz14テキストはUnicodeを使用すること。
あと環境によると思うがsplitは(System.Environment.NewLine.ToCharArray())
にした方がいい気がする。stringのsplit引数はstringでもいい筈なんだが
少なくとも4の時は何故かchar[]じゃないと通らなかったんだよな〜。
0727名前は開発中のものです。
2016/02/17(水) 17:49:22.80ID:HjnSRaCZiPhone用のゲームを制作中です。
@Application.dataPath
AApplication.persistentDataPath
BApplication.temporaryCachePath
ファイルの保存場所は上記3か所あるようですが、
サーバーからダウンロードしたゲームで使用する画像ファイル等は、
どちらに入れないといけないのでしょうか?
現在はAに入れているのですが、@とAは「容量が大きすぎるとリジェクトされる事もある」という情報を得て困惑しています。
Bなんですかね?
temporaryって名称だったので一時的なファイル置き場で、ある日突然システムから消されるものと勝手に思ってたのですが、違うのでしょうか?
0728名前は開発中のものです。
2016/02/17(水) 18:21:14.12ID:CiQJMAsM基本的にはBのApplication.temporaryCachePathが正解
ユーザー操作に依らないでサーバーからダウンロードしたゲームで使用する画像ファイルは
なかったらサーバに再取得しに行けば再構築出来るデータなので一時的なキャッシュとして扱うのが適切
またテンポラリファイルである以上、消えている可能性を考慮して存在チェックと再取得の処理を用意しなければならない
@のApplication.dataPathはアプリ本体に内包したデータファイルを指すパスでありapkやappの中になるため特別な理由がない限り書き込みはすべきでない
AのApplication.persistentDataPathはアプリ単体では再構築出来ないセーブデータ等を保存するパス。再構築可能なファイルを保存すべきではない
例外として、ユーザーがURLやファイル指定で設定したプロフィール画像など再取得が不可能な物は
セーブデータとしてpersistentDataPath以下に置くことが好ましい
0731名前は開発中のものです。
2016/02/17(水) 19:21:03.73ID:RqlewXbYここ数年は特記すべき変化がないってことなんです?
0732名前は開発中のものです。
2016/02/17(水) 19:49:32.80ID:pXcKHMIeすっかり忘れ去られた遺跡だからね
貴方が編集してくれてもいいんだぜ
0733名前は開発中のものです。
2016/02/17(水) 19:51:50.70ID:Q/7ANjt6座標取得やスタンダードアセットを参考にしても分かりませんでした。
どうやったらマウスエイムができるのでしょうか?
0734名前は開発中のものです。
2016/02/17(水) 19:55:35.80ID:VTFpwTqM0735名前は開発中のものです。
2016/02/17(水) 21:02:03.22ID:w2r2iz14単に「コピペすれば動くコード寄越せ」って言ってるのと変わらん…
0736名前は開発中のものです。
2016/02/17(水) 21:11:25.76ID:HvVp5T2lバージョンは5.3.2を使ってます
前のバージョンでゲームを作っててなんともなかったのに新しいバージョンにして
初めて音楽ファイルをインポートする作業をやり始めたのですがつまってます
同じ症状の人おられますか?
0737名前は開発中のものです。
2016/02/18(木) 00:00:38.97ID:7cjKoaWF初歩的な質問で申し訳無いのですが、よろしくお願いします。
衝突判定の数秒後にゲームオーバ処理を行うため、コルーチンを使ってみたのですがどうも動いてくれません。
以下コードの一部です。
_void OnCollisionEnter(Collision col)
____{
________if (col.gameObject.tag ==
0738名前は開発中のものです。
2016/02/18(木) 00:01:08.85ID:7cjKoaWF初歩的な質問で申し訳無いのですが、よろしくお願いします。
衝突判定の数秒後にゲームオーバ処理を行うため、コルーチンを使ってみたのですがどうも動いてくれません。
以下コードの一部です。
_void OnCollisionEnter(Collision col)
____{
________if (col.gameObject.tag == "TheBoard")
________{
___________StartCoroutine(LateTime(3.0f));
________}
____}
____private IEnumerator LateTime(float time)
____{
________Debug.Log("呼び出し");
________Destroy(this.gameObject);
________Debug.Log("呼び出し破壊");
________GameObject exp = (GameObject)Instantiate(detonator.gameObject, transform.position, Quaternion.identity);
________Debug.Log("呼び出し爆発");
________yield return new WaitForSeconds(time);
________Debug.Log("呼び出し遅延");
________SceneManager.LoadScene("GameOver");
____}
衝突→オブジェクト消滅→爆発処理→数秒待機→画面変遷という流れです。
なんで動かないのか調べるため、試しに衝突後の処理を全てコルーチンに入れてみたのですが、
どうもyieldから呼ばれていないようです。
何か解決策有りましたらよろしくお願いします。
0739名前は開発中のものです。
2016/02/18(木) 00:31:48.05ID:dT69GB31その状況から察するに、そもそもスタートコルーチンが呼ばれてないんじゃないの?
タグ名間違えてたりしない?
0740名前は開発中のものです。
2016/02/18(木) 00:37:14.37ID:dT69GB31ごめん
酔ってたからちゃんと読んでなかった
コルーチンを実行してるゲームオブジェクトが、先に破棄されてるんじゃないの?
ゲームオブジェクトはコルーチンが終了してから破棄するか、破棄されるゲームオブジェクトとは関係ない別のゲームオブジェクトからコルーチンを実行してあげるかしないとダメだよ
0741名前は開発中のものです。
2016/02/18(木) 01:07:06.84ID:VlmBiCT7unity入れ直したりosを再起動させたりインポートの方法をメニューのassetの
所からやるように変えたら上手くいきました
何が上手くいった理由なのかはわかりませんがw
0742名前は開発中のものです。
2016/02/18(木) 03:07:48.85ID:nu+A7gPaコルーチン使わなくてもfloat変数作ってそれをTime.deltaTimeで引いた方が早いんじゃない?
0743名前は開発中のものです。
2016/02/18(木) 07:32:24.95ID:eRvToBvZコルーチンは
StartCoroutine("LateTime",3.0f);
で呼び出すんじゃないの?
0744名前は開発中のものです。
2016/02/18(木) 09:08:54.92ID:AQpi5nFTメソッド名が変わった時エラーダンプされないからstring引数は絶対やめたほうがいい
0745名前は開発中のものです。
2016/02/18(木) 10:36:59.10ID:TdEi2HK+日本語字幕の短いチュートリアルくらいはやりましょう
0746名前は開発中のものです。
2016/02/18(木) 13:55:32.05ID:GiMk5ehqthis.gameObject.color や GetComponent<Image>() とやってみましたが上手くいきませんでした。
よろしくお願いします。
0747名前は開発中のものです。
2016/02/18(木) 14:03:44.62ID:lCecrzSRせめて>>738程度に自分で書いたスクリプト貼ってどこでつまずいたのか書けよ
0748名前は開発中のものです。
2016/02/18(木) 14:12:47.31ID:ojlsCmOr0749名前は開発中のものです。
2016/02/18(木) 14:13:17.30ID:prkk2VAOImage.color
0750名前は開発中のものです。
2016/02/18(木) 14:37:11.25ID:lCecrzSR>>749のように取得したのに.color指定すればいいだけなのに何処で間違うのかって話
例えば targetImage = child.gameObject.GetComponent<Image>();
target.color = new Vector4(0, 0, 0, 1);
0751名前は開発中のものです。
2016/02/18(木) 14:38:49.58ID:lCecrzSRTargetImage = child.gameObject.GetComponent<Image>();
TargetImage.color = new Vector4(0, 0, 0, 1);
とかすればいいだけでしょ
0752名前は開発中のものです。
2016/02/18(木) 14:52:38.84ID:prkk2VAO何故Colorのコンストラクタ使わないん?
0753名前は開発中のものです。
2016/02/18(木) 15:01:23.95ID:ojlsCmOr他人に後乗りで説明
その上我流の変なプログラム教えるとか
害にしかなってないじゃないですか…
0754名前は開発中のものです。
2016/02/18(木) 15:07:49.69ID:lCecrzSRforeachとかのスクリプトがなきゃchildのほうも意味不明だろうけどそっちは何もいわないんだね
0755名前は開発中のものです。
2016/02/18(木) 15:34:38.72ID:YlmhAb8aVecto4はUnityマニュアルやチュートリアルのcolor値設定でも使われる
0756名前は開発中のものです。
2016/02/18(木) 16:00:53.04ID:GiMk5ehq今、別オブジェクトから、
public UnityEngine.UI.Image hoge;
からドラッグ&ドロップで持ってきたのを、
hoge.color = new Color(1f, 1f, 1f, 1f);
で、やってみたら一応変更は出来ました。
ですが、結局自身からは取得できずじまいが現状です。
(transform.localPositionみたいに簡単にいじれると思っていたのですが)
0757名前は開発中のものです。
2016/02/18(木) 16:05:01.59ID:IDSt+o7pImage.colorは完全に嘘だぞw
public UnityEngine.UI.Image hoge;
void Start(){
hoge=GetComponent<UnityEngine.UI.Image>().color=new Color(1,0,0,1);
}
とかだろ
0758名前は開発中のものです。
2016/02/18(木) 16:09:58.48ID:YlmhAb8acolorの問題じゃなくて単にUIのImageが取得出来てないだけだろ
そもそもUIの下にImageが幾つあるのかって話からだし
>>747じゃないけどスクリプト貼ったほうが早いと思うよ
0759名前は開発中のものです。
2016/02/18(木) 16:15:52.44ID:prkk2VAOいやまあ俺も>>749しか書いてないから別に完全なコードを書けと言ってるんじゃないよw
だだまあ初心者に教える場合に型を意識させる事はそれなりに意味のある事だと思う
それをわざわざ黙示的変換噛ませてVector4使うって事はそこに俺の知らないなんらかの優位性が
あるのかと思ったから聞いたんよ
まさか理由なく初心者に非効率なやり方教える奴がいるとは思わんかったw
>>757
>>749が示したのはImageクラスのメンバ変数colorに値をセットすればいいって事
そもそもコードにコピペして動く様には書いてないからw
http://docs.unity3d.com/ja/current/ScriptReference/UI.Graphic-color.html
これなw ImageはGraphicを継承してるからImage.colorでなんの問題もないw
0760名前は開発中のものです。
2016/02/18(木) 16:20:55.71ID:YlmhAb8aImage.colorにあわせてサンプル、これで動くはずだから終わりにしろ
public Canvas canvas;
void Start () {
Image hoge = null;
foreach (Transform child in canvas.transform){
if(child.name == "MainImage"){
hoge = child.gameObject.GetComponent<Image>();
hoge.color = new Color(0, 0, 0, 1);
} else if (child.name == "SubImage") {
hoge = child.gameObject.GetComponent<Image>();
hoge.color = new Color(1, 1, 1, 1);
}
}
}
0761名前は開発中のものです。
2016/02/18(木) 16:44:07.58ID:prkk2VAOCanvasの参照持つぐらいなら直接Imageの参照持つべきだし
そもそもこのコードだとCanvasの直下の子にあるImageしか取れないし
文字列リテラル決め打ちとかヒエラルキーで名前弄られたら簡単に動かなくなるし
見事な糞コードだなw
0762名前は開発中のものです。
2016/02/18(木) 17:12:14.19ID:9yZU1I7x0763名前は開発中のものです。
2016/02/18(木) 17:16:44.10ID:+YpOWldA0764760
2016/02/18(木) 18:16:55.76ID:XVXWqMLX色変え条件判らんからそこはそのまま
Unity立ち上げて起動確認までしたからどんどん不足分言ってくれ
private Component[] hogeImage;
void Start () {
hogeImage = GameObject.Find("Canvas").GetComponentsInChildren<Image>();
foreach (Image child in hogeImage ) {
if(child.name == "MainImage"){
child.color = new Color(0, 0, 0, 1);
} else if (child.name == "SubImage") {
child.color = new Color(1, 1, 1, 1);
} else if (child.name == "NextImage") {
child.color = new Color(1, 0, 0, 1);
}
}
}
0765名前は開発中のものです。
2016/02/18(木) 19:43:17.00ID:prkk2VAOマネージャ的にインスペクタから全て設定できる様にしてみた
Graphicが対象なのでImageだけでなくTextなどの色変更も可能
どこに置いても動くので呼び出し元と同じオブジェクトにアタッチしておいて色を変えたいところで↓呼べばおk
GetComponent<GraphicsColorChanger>().DoColorChange();
Graphicを動的生成する場合は生成元でtargetsにセットすること
public class GraphicsColorChanger: MonoBehaviour {
//色とGraphicを保持するクラス
[Serializable]
public class GraphicColor{
public Graphic graphic;
public Color color;
//色の適用処理
//バーチャルなのは色変化アニメーションをさせる等の拡張を想定
public virtual void Apply(){
graphic.color=color;
}
}
public List<ImageColor> targets;
//色変更はApply()呼ぶだけ
public void DoColorChange(){
foreach(var t in targets){
t.Apply();
}
}
}
個人的にはGraphicColorのカスタムプロパティドロアー書いてリスト表示を単一行にしたい感じだ
0766名前は開発中のものです。
2016/02/18(木) 19:45:57.31ID:kYQYNaDjわかりやすい例というか
質問者さんもうちょいちゃんと情報を載せような?
0767名前は開発中のものです。
2016/02/18(木) 19:48:18.80ID:prkk2VAO誤)public List<ImageColor> targets;
正)public List<GraphicColor> targets;
0768名前は開発中のものです。
2016/02/18(木) 20:20:36.06ID:Ar9aRBLZ> Some objects were not cleaned up when closing the scene. (Did you spawn new GameObjects from OnDestroy?)
もちろんOnDestroyで何かを作っているということはなく
どこでメモリリーク?しているのか見当がつかないのですが
こういう場合に場所を特定する手法ってありますでしょうか
0769名前は開発中のものです。
2016/02/18(木) 22:45:44.93ID:1s7I/TKd周りに聞ける人もいなくて・・・。
uGUIで配置したボタン画像の変更をしたいです。
(現在、以下のような形です。)
Canvasに以下のソースをアタッチして、Multiple Spriteを追加。
public class SpritesChange : MonoBehaviour {
public Sprite[] sprites;
}
ボタンがタッチされた時に
SpritesChange sprite = GetComponent<SpritesChange> ();
buttonImage.sprite = sprite.sprites[0];
みたいなスクリプトを書いてみたのですが、nullとエラーが出てしまいます。
こういった場合、どのように変更するのでしょうか。
0770名前は開発中のものです。
2016/02/18(木) 22:56:06.94ID:mxgCWiU9せめて何がnullか確認してくれ。
デバッガで止めるなりヌル判定してログ出すなりしてspriteかspritesかsprites[0]かbuttonimageどれかがnullか見るんや。
言ってる意味わからんかったらまずc#の勉強してくれ。
0771名前は開発中のものです。
2016/02/18(木) 23:00:02.17ID:1s7I/TKd失礼しました。
GetComponentしたspriteはnullではないみたいです。
sprites[0]がnullになっております。
アタッチ後、ドラッグで追加はしているのですが取得できていないみたいです。
レスありがとうございます。
0772名前は開発中のものです。
2016/02/18(木) 23:24:25.96ID:mxgCWiU9なんやろね。
少なくとも俺の環境ではうまく動くよ
0773名前は開発中のものです。
2016/02/18(木) 23:26:24.10ID:Eij3fMYqhttps://drive.google.com/file/d/0B-7GdJw4zKrqT0NFSGs2QmVOWVE/view?usp=sharing
面白そうなのでヒエラルキー上に残ったゴミを探すエディタスクリプトを書いてみた。
インポートするとWindowメニュー>GomiCheckerというメニューが出るので選択
[Search]押す>デバッグ実行>止める>エラー出る>[Check]押す>Gomiにリスト表示される
どんなゴミができてるか分かれば調べるのも比較的楽になるんでないかね?
GomiMakerのほうはテスト用に使ったものなので不要なら捨てておk
0774名前は開発中のものです。
2016/02/18(木) 23:32:00.55ID:Ar9aRBLZすません何もしていないのに直っちゃいました。。
でもありがとうございます
そうか視認できる範囲ならヒエラルキービュー見りゃ良かったのか…
0775名前は開発中のものです。
2016/02/18(木) 23:34:14.22ID:1h44uY0V追記、リスト右にある[x]ボタンでGameObjectをDestroyImmidiate出来るが、必要なオブジェクトも破壊出来るので使用時は注意してくれ
またOnGUI()でヒエラルキーにある全てのオブジェクトを舐めるのででかいシーンでやると危険かもしれないw
やっつけで書いたので色々テキトーですまんね
多少は助けになると良いんだが
0776名前は開発中のものです。
2016/02/18(木) 23:36:48.97ID:1h44uY0VGomiMaker使って試すとわかるけど、このタイミングで作られたゴミはヒエラルキービューに表示されないことがあるんよ
だからエディタスクリプトで全チェックして探す形にしたけどまあ治ったなら良かった
0777名前は開発中のものです。
2016/02/18(木) 23:38:36.09ID:Ar9aRBLZ「↓」ボタン押すと、「GomiChecker.unitypackage」単体で落ちてきます
0778名前は開発中のものです。
2016/02/18(木) 23:44:06.12ID:1h44uY0Vunitypackageなのでアセットメニューからインポートするか、プロジェクト開いた状態でダブルクリックすれば取り込めるよ
0779名前は開発中のものです。
2016/02/18(木) 23:57:57.64ID:Ar9aRBLZありがとうございます
参考にさせていただきます!
0780名前は開発中のものです。
2016/02/19(金) 00:22:45.63ID:Dv6DILVNすみません・・・再起動かけたら動きました・・・。
スプライトを分割したのを設定したら方法が違うのかと。
わざわざテストまでさせてしまい申し訳ないです。
■ このスレッドは過去ログ倉庫に格納されています