【3Dゲームエンジン】Unity質問スレッド31at GAMEDEV【3Dゲームエンジン】Unity質問スレッド31 - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト418:名前は開発中のものです。 17/09/20 22:54:39.74 x6n8KR83.net あ、>>309じゃなくて >>399でした 419:名前は開発中のものです。 17/09/20 22:57:13.88 Z6HUDHZY.net アフィカス市ね 420:名前は開発中のものです。 17/09/20 23:37:10.11 OogVTLLt.net >>410 言ってることは大体そう 多分image pathファイルをResourcesフォルダに入れていないか名前が間違ってるんじゃないの? Resources.Loadはファイルが見つからんときnullを返すからtextureが空っぽのまま下まで行って 3行目でtextureやその幅を引っ張り出すときにNullReferenceExceptionが出てる 421:名前は開発中のものです。 17/09/20 23:43:37.40 IUSnNb2O.net >>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型のオブジェクトを生成して代入しているという点に注意 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch