質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

解決済

1回答

1940閲覧

Unity2D ランダムにオブジェクト形成

fumika

総合スコア9

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

0クリップ

投稿2017/06/20 09:25

###ランダムにオブジェクトの形成
Unity2Dで中央から4種類の靴下のうち一つがランダムに現れて、その柄によって四方のカゴに仕分けるというゲームを作っています。prefabを用いて中央からオブジェクトを形成する機能の実装中に以下のエラーメッセージが発生しました。

###発生している問題・エラーメッセージ

The`.'operator cannot be applled to operand of type`method group' The name`number'does not exist in the current context Cannot apply indexing with [] to an expression of type`method group' Expression denotes a`type',where a`variable',`value' or`method group's expected The type`<error>'cannot be used as type parameter`T' In the generic type or method`UnityEngine.Object.Instiate<T>(T,UnityEngine.Vector3,UnityEngine.Quaternion)`.There is no implicit reference conversion from`<error>'to`UnityEngine.Object'

###該当のソースコード

using System.Collections; using System.Collections.Generic; using UnityEngine; public class atarihanntei : MonoBehaviour { //靴下のPrefab public GameObject SOX1; //靴下の作成 public void SOX(Transform origin) { number = Random.Range (0, SOX.Length); Instantiate(SOX[number],Vector3(0.0f, 2.0f, 0.0f),Quaternion.identity); } }

###試したこと
http://qiita.com/maki0321/items/cb01fb4ee8cf0a6bbafe
ここのサイトを参考に作っていました。でもどうしてもnumberでエラーが出ます。

###補足情報(言語/FW/ツール等のバージョンなど)
C# Unity5

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

numberが見つからない旨のエラーが見られます。numberという名前の変数を宣言していないためですので、さしあたりnumber =int number =に書き換えてみてください。
ご参考にされたサイトも同様の記述ですが、もしかすると記事を書かれた方のミスかもしれません。

SOX.LengthSOX[number]という記述が見られますが、これらは誤ってSOX1のつもりで書いてしまわれたのでしょうか。これらSOXSOX1に修正してみてください。

もう一点、Length[]
によるアクセスは通常配列に対して使うべきものですが、SOX1は配列になっておりません。単純な解決法はpublic GameObject[] SOX1;に書き換えることですが、もしかしてこれはあえて配列ではなくしているのでしょうか(サイトの方の方法を単純に真似たのではなく、何らかの設計上のアレンジを加えている)?
その場合、整合性のある解決をするには、もっと広い範囲のコードをご提示いただく必要がありそうです。

投稿2017/06/20 12:41

Bongo

総合スコア10807

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fumika

2017/06/20 13:40

回答ありがとうございます! まだまだ私の勉強不足で、通常配列とかよくわかってないゆえのミスです… でもpublic GameObject[] SOX1;ってしたらprefabで登録したSOX1,SOX2,...SOX4が呼び出せるようになるのか疑問で1はつけてませんでした。 まだ当たり判定でオブジェクトが消えるという動作ができてないので確認はできていませんがエラーは消えました!ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問