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

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
393: ダーク王鍬大使 ◆SoVpkB15jY 2017/09/20(水)12:55 ID:y9pd2zap(2/3) AAS
まず大使スラングで草は生やさない(^^
次に「ひゅ」なんてスラングも使われてない(^^
偽大使を見極められないとか物事の判断ができない発達障害餅でふか?(^^
自演大使なんてどこにもいまふぇんが・・・(^^
この人やっぱり自分のこうだったらいいなをまき散らすネトウヨパヨクと同類の人間でふね(^^
すっげぇ頭悪そうでふ(^^
ボッキング!(^^
394: 2017/09/20(水)12:58 ID:mr3eZX6L(1) AAS
ギャグでもお前の様な基地外だと思われるのはご免被るわ
人類としてのアイデンティティの崩壊じゃないか
基地外の騙りとか洒落になってねえぞw
395: 2017/09/20(水)13:05 ID:AZd/BJhh(1) AAS
基地外にちょっとでも理性が残ってるなら
相手にせずにスルーしとけばそのうちアホらしくなって消えるんじゃね
396: 2017/09/20(水)13:21 ID:j3ZxwqyF(1) AAS
1mmでも理性あるなら何役も演じながら
独りで1日300レス近く書いたりしないでしょ

コイツによく似た基地外も同じことしてたからな
そういう生物なんだと思うわ
397: ダーク王鍬大使 ◆SoVpkB15jY 2017/09/20(水)14:28 ID:y9pd2zap(3/3) AAS
結局いつもの糖質君まで湧いてきちゃったじゃないでふか(^^
キチガイがキチガイを呼ぶ魔の精神病院でふか此処は(^^
398: 2017/09/20(水)15:04 ID:xD7MVD8e(1) AAS
誰かさんがRock57規制喰らったり、ダウナー入ってると平和が訪れる不思議
399
(4): 2017/09/20(水)15:44 ID:x6n8KR83(2/6) AAS
初歩的な質問なんですが、

Texture2D texture = Resources.Load("image path") as Texture2D;
Image img = GameObject.Find("Canvas/Panel/***").GetComponent<Image>();
img.sprite = Sprite.Create(texture, new Rect(0, 0, texture.width, texture.height), Vector2.zero);

これでpanelのSorceImageを変えようとしてるのですが
3行目でNullReferenceException: Object reference not set to an instance of an object
とエラーが出てできません
どこが問題なのでしょうか。
400
(1): 2017/09/20(水)16:39 ID:yiJ9HCsf(1/2) AAS
M+フォント等の日本語フォント同梱しないで、日本語のゲーム作るのは無謀でしょうか
あんまり容量大きくしたくない
401
(2): 2017/09/20(水)17:03 ID:IUSnNb2O(1/3) AAS
>>399
十中八九GameObject.Findがnullを返してる。***という名前のオブジェクトが存在するのか?

>>400
システムフォントを使うことは可能だし実際それでリリースしてる
ただしシステムに日本語フォントが入っていない場合当然文字化けるので多言語対応して、最低限英語版リソースもぶっ込んでおくべき
それでも日本語フォント同梱するよりは軽いはずだ
402
(1): 2017/09/20(水)18:02 ID:x6n8KR83(3/6) AAS
>>401
そのオブジェクトやスプライトのパス****は合ってると思う何回も見直した
仮にそれが間違ってた場合は二行目に注意来るんじゃないんですか?わからんけど
この文よりオブジェクトとかの方に問題ありそうな気もするんですがわからんです
403
(1): 2017/09/20(水)18:51 ID:Zi6RRNcu(1) AAS
>>399
そのpanelはゲーム中に動的にインスタンス化されるもの?
そうでないなら、静的に解決できるものは静的に解決した方がいいよ
Findを使う代わりにpublicフィールドかSerializeFieldでゲームオブジェクトを静的に参照した方がいいよ
404: 2017/09/20(水)19:42 ID:yiJ9HCsf(2/2) AAS
>401
システムフォントもありなんですね、ありがとうございます
405
(1): 2017/09/20(水)19:48 ID:53gjRVkv(1) AAS
>>399
Sprite sprite = Resources.Load<Sprite>("名前");

GetCommponent<Image>.sprite = sprite;
で自分の場合は変えられたよ。
406
(1): 2017/09/20(水)20:00 ID:IUSnNb2O(2/3) AAS
>>402
すまん、スマホで見てて行が折り返してたんで勘違いした
改めて3行目見るとnullである可能性があるのはimgかtextureのいずれかだろう

textureならパスが間違ってるとか、Resourcesからの相対パスになってないとか、読み込み時の失敗だろう
imgならFindしたGameObjectにImageコンポーネントがアタッチされてないとかの可能性が濃厚

どっちがnullか特定するには、3行目にブレークポイント入れてデバッグ実行して、止まったらimg,textureのそれぞれにカーソル当てればいい
デバッガが使えないなら、3行目にDebug.Log(〜);とかしとけばいいがデバッガ使えないのは不便過ぎるから使える様になっておくことを推奨しとく
407: 2017/09/20(水)20:08 ID:x6n8KR83(4/6) AAS
>>403
>>405
>>406

レスありがとうございます。 
初心者すぎてどこがどうだという返事すらまともにできないのですが、
これから皆さんがくれたレスを見ながら検索しつつ試してみようと思います。
一応でも感謝の意だけは伝えようと思いレスしました。
またしょーもない質問するかもしれませんが宜しくお願いします。
408
(1): 2017/09/20(水)20:42 ID:SV5ZilHg(1) AAS
UnityによるARゲーム開発 ―作りながら学ぶオーグメンテッドリアリティ入門
外部リンク:www.amazon.co.jp

これ読んだやつおる?
409: 名無し@キムチ 2017/09/20(水)20:54 ID:+uMwl9Ux(1) AAS
>>408
実験的なものが好きな人間にはいいだろうな。
当方は興味ない。
410
(4): 2017/09/20(水)22:43 ID:x6n8KR83(5/6) AAS
ダメだ全然わかんねえええあえ
基本の基本から聞いていいすか?

?
>>309の一行目

Texture2D texture = Resources.Load("image path") as Texture2D;

これは
textureに指定したパスのリソース(projectタブのフォルダに入れてあるなんやかや)を読み込んで入れる。スプライトとして。
でいいんですよね?
そもそもこの冒頭のTexture2D textureはなんですの?下でも出てくるけど
Texture2Dをtextureと呼ぶ みたいに読んでたけど(変数の宣言みたいな)違う?

?
Image img = GameObject.Find("Canvas/Panel/***").GetComponent<Image>();

これも上と同様にImageをimgと呼ぶから入って、
Canvas/Panel/にある***というゲームオブジェクト?
(弄ろうとしてるのはpanel だから実際***パスは入れてないけど)
を探し、
そのオブジェクトのコンポーネントであるImage←(デフォのスクリプトコンポーネントでしょ?)をimgに格納?する?

?
img.sprite = Sprite.Create(texture, new Rect(0, 0, texture.width, texture.height), Vector2.zero);

?のimgに格納されてるコンポーネントのspriteに以下の処理を代入する?
?のtextureに読み込んでる画像を入れる。座標は0

とりあえずunity触りはじめて3日程度だからボタン押したら背景が切り替わる
って感じでサンプルコード探して試してたんだけど最初からこんなに躓くと思わなんだ
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#一通り覚えてからやれば
1-
あと 580 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ

ぬこの手 ぬこTOP 0.012s