🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
C#

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

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

3回答

728閲覧

C#で使えない文字列のファイル名を書きたい

mo_dori

総合スコア7

C#

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

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

1クリップ

投稿2019/11/18 08:10

編集2019/11/18 08:32

UnityでのC#です。

Unity内でオブジェクト名に「bone.001」などがあり、そのオブジェクト名をスクリプト内で宣言したいのですが、
おそらく「.」が使えないようで「構文エラーです」とエラーがでてしまいます。
オブジェクトをリネームして「bone_001」等にすれば宣言出来るのですがなるべく元ファイルのまま宣言したいのです。
何か方法はないでしょうか?

コードを追記します、以下でエラーが出ます、よろしくお願いします。

using System.Collections; using System.Collections.Generic; using UnityEngine; public class test : MonoBehaviour { public GameObject spine.001; // Start is called before the first frame update void Start() { } // Update is called once per frame void Update() { } }

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

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

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

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

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

BluOxy

2019/11/18 08:18 編集

.はエスケープ文字ではないため文字列として扱うこと自体はできると思います。 実際に、System.Console.WriteLine("Hello.C#");と書いて出力ができます。 構文エラーとされるコードを掲示していただけると幸いです。
Zuishin

2019/11/18 08:35

これはオブジェクト名(GameObject.name)ではなく変数名ですね。
tmp

2019/11/18 10:00

多分、変数名に「.」を使いたいという意味だと思いますよ、それだと辻褄が合う
guest

回答3

0

既にベストアンサー付いていますがご参考までに。
用途によってはDictionaryを使うのも1つの手です。

宣言部
public Dictionary<string, GameObject> bones;

要素追加(GameObjectの指定部はご自由に)
bones.Add("spine.001", GameObject.Find("spine.001"));
bones.Add("spine.002", GameObject.Find("spine.002"));

要素取得
GameObject obj = bones["spine.001"];

投稿2019/11/18 09:07

sakura_hana

総合スコア11427

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

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

mo_dori

2019/11/18 10:13

これはまさに探していたものです、ありがとうございます!
guest

0

ベストアンサー

public GameObject spine.001;

.はクラスのメンバーにアクセスするために使われる記号です。
なので、変数名には.を使うとコンパイルエラーが発生します。

残念ながら、どの文字が使えてどれが使えないかは識別子名を読み漁ってみないと分かりません。
C#の機能を利用するのに使われるキーワードは大体が使えません。
(byte,class,?など)

投稿2019/11/18 08:35

編集2019/11/18 08:39
BluOxy

総合スコア2663

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

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

mo_dori

2019/11/18 08:58

ご丁寧にありがとうございました。
guest

0

変数名にピリオドは使用できません。その文字は他の用途で使われてます。
その名前にこだわりたいのであれば、ピリオドの代わりに_の文字を使われてはどうでしょう

public GameObject spine_001;

であれば問題はありません

投稿2019/11/18 08:35

y_waiwai

総合スコア88038

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

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

mo_dori

2019/11/18 08:58

ありがとうございます。 諦めて全てリネームしなおします。
BluOxy

2019/11/18 09:21 編集

> 諦めて全てリネームしなおします。 質問からそれるのであまり深堀りはしませんが、変数名に数字を含めるのではなく、配列やコレクション(リストやディクショナリなど)で管理した方が良いと思います。 例えば、public GameObject spine_001;ではなくpublic List<GameObject> splines = new List<GameObject>();とリストで保持したり、sakura_hanaさんの提案のようにディクショナリを用いたりなどですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問