[過去ログ] 【3Dゲームエンジン】Unity質問スレッド31 [無断転載禁止]©2ch.net (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
411: 2017/09/20(水)22:54 ID:x6n8KR83(6/6) AAS
あ、>>309じゃなくて
>>399でした
412: 2017/09/20(水)22:57 ID:Z6HUDHZY(1) AAS
アフィカス市ね
413(1): 2017/09/20(水)23:37 ID:OogVTLLt(1) AAS
>>410
言ってることは大体そう
多分image pathファイルをResourcesフォルダに入れていないか名前が間違ってるんじゃないの?
Resources.Loadはファイルが見つからんときnullを返すからtextureが空っぽのまま下まで行って
3行目でtextureやその幅を引っ張り出すときにNullReferenceExceptionが出てる
414(1): 2017/09/20(水)23:43 ID:IUSnNb2O(3/3) AAS
>>410
さすがにちょっとC#の基礎を覚えた方がいいかもしれない…と前置きしといてざっくり解説
?は色々間違ってる。ちょっと正しく書くと…
1. Texture2Dという型の変数textureを宣言し(左辺)
2. リソースフォルダ以下から指定したリソースをTexture2D型として読み込み(右辺)
3. 宣言した変数に入れる(代入演算子=)
という事をしている
この際注意しなければならないのは、Resources.Loadはプロジェクト内に作成したResourcesという名前のフォルダの中からしか読み込めず
引数に指定するのもResourcesフォルダからの相対パスとなるということと、拡張子はつけないことだ
プロジェクト(正確にはプロジェクトディレクトリのAssetsフォルダ)から見て
Resources/Hoge/Fuga.pngというパスのファイルがあった場合、
Resources.Load<Texture2D>("Hoge/Fuga");とすると読み込める
書き込みを見る限り、この辺理解せずにAssetsフォルダからの相対パスで指定してるとエスパーできる
?は?同様変数宣言の認識がやや怪しいが、概ね正しい。
ただしGameObject.Find()も、GetComponent<T>()も、探した結果見つからなかったらnullを返す事に注意しないと今回同様のエラーを頻発して苦労するだろう
?はかなり間違ってる
1. ?のimgに格納されてるコンポーネントのspriteに以下の処理を代入する(左辺+代入演算子)
2. ?のtextureに読み込んでるTexture2Dから、指定した矩形(Rect)の範囲を切り出し、回転軸を左下隅(Vector2.zero)に指定してSpriteを生成する
って感じだ
スプライトとテクスチャはどちらも画像を元にしたオブジェクトだが、用途が違うため違う型として扱われる
Imageのsprite変数はSprite型として宣言されているためわざわざtextureからSprite型のオブジェクトを生成して代入しているという点に注意
415(1): 2017/09/21(木)00:05 ID:L7Ez3IFe(1) AAS
>>410
クラスや型、と、インスタンスや変数名の識別がまず出来てない
コピペだけで動かそうとせずにちゃんとプログラミング言語の概念を最低限学ばないと
C#は良い言語だから腰を据えて入門書を読むなりしたほうがいいですわよ
416(1): 2017/09/21(木)01:04 ID:wxJXWbMz(1/4) AAS
>>413
いきなり確信っぽいこと言われて驚きました
確かにResoucesフォルダには入れてなくて、
2Dシューティングチュートリアルの真似まま、Materialフォルダを作ってそこにBackgroundフォルダを作り、そこに画像を入れてました
まだ確認してませんが、もしかするとそれかもしれません
Resources.Loadはプロジェクトタブ?にあるファイル全体に検索をかけるものだと思ってました。
>>414
その通りです。知識まったくなく、これから入れていこうという段階です。
Texture2Dという型があるのですね…。変数の型というのはintやstringとかのイメージで、Texture2Dというような型があるとは想像もできなくてこれが変数であるという確信が持てませんでした。
Resource.Loadに関しては>>413さんにも指摘していただいて、それも今知りました。ありがとうございます
エスパーその通りです。
?難しいですね。なんというか直感的にわからないです
単語の意味を覚えないとダメですね。
ちょっとレスを何回か読んでちゃんと理解して頭に入れます
今何も言えないです。すみません理解が遅くてちゃんとレスできなくて。
>>415
そうですね。これから徐々にそういった知識を入れていこうと思っています。
レス遅くなって申し訳ないです。
皆様ありがとうございました。とりあえず今日は寝て、また明日レス見ながら色々試してみます。
417: 2017/09/21(木)06:22 ID:s8GogDjV(1) AAS
コーディング無しでブループリント使えるUE4行ったほうが幸せになりそう
418: 2017/09/21(木)07:29 ID:OhQghky2(1) AAS
AとBという全く同じオブジェクトを生成してプレイヤーと敵としてどちらもHP10、当たり判定で「接触したらHPを-1」という最低限の処理をしてみたんだけど、
Aはプレイヤーとして操作して動かし敵Bは動かないことくらいしか違いないはずなのに、操作して単純に接触するということを何度やっても毎回プレイヤーが圧勝してしまうのはなんでなんだぜ?
処理される順序の違いとか同時だと何かが処理できなかったりとかしますか?
武器で殴るとか弾を当てるとかいう一方的な当たり判定ではなく、双方に対して公平に処理する場合は普通はどんな感じでやるんでしょうか?
419: 2017/09/21(木)07:59 ID:Ei0o9L2F(1/3) AAS
ログ出してみたら解決すんじゃない?
debag.log(ゲームオブジェの名前+"にダメージ")
みたいに
420(3): 2017/09/21(木)10:16 ID:BkQgrtlh(1) AAS
初歩中の初歩だとは思うんですが
調べるとstaticで宣言すればシーン跨いでも変数が保持されると出てくるんですが
スクリプトがオブジェクトに紐づいてるので保持されてもアクセスできないように思えます
別のシーンでも適当なオブジェクトに紐づけたら良いんでしょうか?
それはそれで変数が別物扱いされそうですが…
421(1): 2017/09/21(木)11:27 ID:vct7J7zt(1) AAS
>>420
基本的に(型名).(変数名)
staticのリファレンス確認しなよ
422: 2017/09/21(木)11:29 ID:w2odxgQJ(1) AAS
ちょっとUnity触わんの早いんじゃね
C#一通り覚えてからやれば
423: 2017/09/21(木)13:37 ID:TN9tezrS(1/2) AAS
>>420
アセットを購入すれば簡単にできますよ
424(1): 2017/09/21(木)14:02 ID:isiGpJBc(1/3) AAS
>>420
static変数はオブジェクトではなく型ひ紐付くため入れた値自体はシーンが変わっても保持される
ただし、static変数に入れたものがシーン内に配置されたGameObjectのインスタンスや、それにアタッチされたコンポーネントであった場合この限りではない
これは、シーンが破棄される際に当該オブジェクトのdestroy処理が走り、destroyされたGameObjectやコンポーネントはnullと比較された際にnullであるかの様に振る舞うという仕様のため
シーンを跨いでGameObjectやコンポーネントを生存させたい場合は、UnityEngine.Object.DontDestroyOnLoadを使う
425(1): 2017/09/21(木)14:59 ID:FeXNVo5K(1) AAS
2画面使う対戦型のゲームを作ってるのですが
ボタン2つを同時にselect状態にとか出来ますか?
426: 2017/09/21(木)15:35 ID:Ei0o9L2F(2/3) AAS
>>425
if文使ったらなんでも出来る
427: 2017/09/21(木)16:50 ID:6io8/Hvm(1) AAS
イノキみたいだなw
428(2): 2017/09/21(木)17:13 ID:wxJXWbMz(2/4) AAS
ブンキですかー!?
429: 2017/09/21(木)17:24 ID:Ei0o9L2F(3/3) AAS
>>428
好き
430: 2017/09/21(木)17:38 ID:9h29LJp4(1) AAS
>>421
>>424
ありがとうございます
staticの仕様とc#の基礎をもう少し学んできます
431(3): 2017/09/21(木)19:36 ID:WBjfXanf(1/3) AAS
>>416
勉強がてらに調べてみた
結構苦労した
基本的なパネルのイメージの変え方
using UnityEngine.UI;
public GameObject panel;←インスペクタで指定
public Sprite sp;
sp=Resources.Load<Sprite>("img");←Resourcesフォルダのimgという画像ファイル
panel.GetComponent<Image>().sprite=sp;
これでパネルの画像変更はできる
あとは自分の使いたいように変形させてくれ
432(3): 名無し@キムチ 2017/09/21(木)20:16 ID:PeDfCwWA(1/2) AAS
>>431
UnityEngine.UIで使うテキストはダサい。
文字が小さい時にはいいが、大きくすると何となくはっきりしなくダサくなる。
動画の編集ソフトみたいにはっきりした鮮やかなテキストを入れる方法はありますか?
433(1): 名無し@キムチ 2017/09/21(木)20:17 ID:PeDfCwWA(2/2) AAS
あと、UnityEngine.UIのテキストにフォントを追加する方法を教えてください。
434: 2017/09/21(木)20:52 ID:TN9tezrS(2/2) AAS
>>432
アセットを買えばいいですよ
435(2): 2017/09/21(木)20:52 ID:wxJXWbMz(3/4) AAS
>>410です。
昨晩質問した件はResoucesフォルダを作ってそこから使うことで解決できました。
エスパーの皆さんありがとうございました。
>>431
とりあえずスクリプトをコピペしてみたらエラー出てダメでした。
public使う理由とかもよくわからんかったです。
436: 2017/09/21(木)21:05 ID:zjh1plRo(1) AAS
>>435
プログラミングそのものを勉強した方がいい
437: 2017/09/21(木)21:20 ID:qwf9eKHC(1) AAS
>>428
笑っちまった悔しい
438(1): 2017/09/21(木)21:22 ID:WBjfXanf(2/3) AAS
>>435
最後の2行はStart(){の中にいれないと動かないよ
まだサンプルプログラムなぞるだけで精一杯な段階か
もしかしてインスペクタで指定っていう意味わかってないのかな
まぁ意味がわかるのはもうちょっと勉強してからかな
439(1): 2017/09/21(木)21:34 ID:wxJXWbMz(4/4) AAS
>>438
一応OnClickの中で試したんですけどダメでした。
その通りです。簡単なサンプルコード拾ってきて動くか試してなんで動いてるか見てって感じです。
インスペクタで指定 これを見た時「手動じゃんw」って思いましたし
多分意味わかってないす;
Loadの後の<>もわからなかったですし、色々と知識不足ですみません。
せっかくレス頂いたので、ちゃんとメモテキストにまとめて残してはありますので
後々見直して参考にさせてもらうつもりでいます。mm
440(1): 2017/09/21(木)21:37 ID:isiGpJBc(2/3) AAS
>>431
panelをGameObject型で保持した意図は?
GetComponentするのは無駄だし、panelにセットしたGameObjectがImageコンポーネントを持っていない場合実行時にエラーになるからメリットは少ないと思うんだが?
素直にImage型の変数にした方が負荷的にもヒューマンエラーによるトラブル回避の面でもいいと思うぞと
上下前次1-新書関写板覧索設栞歴
あと 562 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ
ぬこの手 ぬこTOP 0.014s