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

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

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

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

列挙型

データ型の一種で、要素・メンバなど名前のある値や、型の列挙子によって構成されます。

Q&A

解決済

1回答

2327閲覧

エラーCS0426:The type name 'Type' does not exist in the type 'ItemBox'の原因究明

Noboru_Ryu

総合スコア4

C#

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

列挙型

データ型の一種で、要素・メンバなど名前のある値や、型の列挙子によって構成されます。

0グッド

0クリップ

投稿2020/07/17 16:04

error CS0426: The type name 'type' does not exist in the type 'ItemBox'

Unity2Dで脱出ゲームのItemBoxを作成しています。
参考動画のコードを元にスクリプトを作成したのですが、以下のようなエラーメッセージが発生しました。

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

Assets\Scripts\Item\ItemBox.cs(44,33): error CS0426: The type name 'Type' does not exist in the type 'ItemBox'

試したこと

エラーに該当するコードはコンソールによると、
1.public bool CanUseItem(ItemBox.Type type)
2.public void UseItem(ItemBox.Type type)
の二箇所のようです。
他に作成したスクリプト”Item”にTypeを列挙型で管理していたのですが、
こちらが参照されていないことでエラーが発生したと判断し、
public enum Type
{
Leaf = 0,
Key = 1,
}
public Type type;

と付け足した所、エラーCS0426が消えた代わりにコンパイルエラーが発生しました。
動画参照元のコードを見た限りでは”ItemBox”スクリプトに上記6行分のコードは書かれていません。
仮にこのコンパイルエラーが解消されても、”Item”と"ItemBox"に重複したコードがあるということに抵抗を感じてしまいます。
原因や解決法が分かる方がいれば、ご教授お願します。

該当のソースコード

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ItemBox : MonoBehaviour
{
public GameObject[] boxs;

public static ItemBox instance; private void Awake() { instance = this; } public void SetItem(Item.Type type) { int index = (int)type; boxs[index].SetActive(true); } public bool CanUseItem(ItemBox.Type type) { int index = (int)type; return boxs[index].activeSelf; } public void UseItem(ItemBox.Type type) { int index = (int)type; boxs[index].SetActive(false); }

}

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

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

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

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

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

guest

回答1

0

ベストアンサー

現在開示していただいているコードはItemBox.csで間違いないのでしたら、

c#

1public void SetItem(Item.Type type) 2{ 3 int index = (int)type; 4 boxs[index].SetActive(true); 5} 6 7public bool CanUseItem(ItemBox.Type type) 8{ 9 int index = (int)type; 10 return boxs[index].activeSelf; 11} 12 13public void UseItem(ItemBox.Type type) 14{ 15 int index = (int)type; 16 boxs[index].SetActive(false); 17}

にある通りメソッドの引数にItem.TypeItemBox.Typeの2種類を使っているのでItemBox.Typeとして定義されているものがないため、エラーになっても仕方ありません。

単なるミスだったらCanUseItemとUseItemの引数の型をItem.Typeに書き換えればよいのではないかと思います。

投稿2020/07/17 16:54

KoichiSugiyama

総合スコア3041

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

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

Noboru_Ryu

2020/07/18 04:01

迅速な回答ありがとうございます! 的確なご指導のおかげで間違いに気づくことができました。 感謝です!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問