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

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

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

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

Unity

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

Q&A

解決済

2回答

8354閲覧

Unity スクリプトに矛盾する行末があります の警告文

ssssggg

総合スコア40

C#

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

Unity

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

1グッド

0クリップ

投稿2019/04/04 04:20

Unityについてです。
下記の警告が出ていてスクリプトが正常に動作しないのですがどうすればいいでしょうか。
原因はコードだと思われますが、どこが悪いのかがわかりません。


警告文

There are inconsistent line endings in the 'Assets/Attack.cs' script. Some are Mac OS X (UNIX) and some are Windows.
This might lead to incorrect line numbers in stacktraces and compiler errors. Many text editors can fix this using Convert Line Endings menu commands.

日本語
'Assets / Attack.cs'スクリプトに矛盾する行末があります。 Mac OS X(UNIX)もあればWindowsもあります。
これにより、スタックトレースの不正な行番号やコンパイラエラーが発生する可能性があります。多くのテキストエディタは、行末変換メニューコマンドを使用してこれを修正できます。


動かないスクリプト

ゲームのアイコンのオブジェクトにアタッチされています。
表示非表示を切り替えたり、クリックされた動作をBattleManagerに送る役割をしています。

開始時に、Debug.Log"AA""dd"が2回ずつ出ます。なのでスクリプトは動いてます。でもAAが二回出るはずがないのでおかしいです。


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

public class Attack : MonoBehaviour
{
GameObject BattleManagger;
BattleManager sc;

int BNsyori = 0;//scから変数の変化によって処理をするのを重複させない役割 void Start() { Debug.Log("AA"); BattleManagger = GameObject.Find("BattleManagger"); sc = BattleManagger.GetComponent<BattleManager>(); } // Update is called once per frame void Update() { int BsyoriA = sc.BsyoriA; int BsyoriB = sc.BsyoriB; int Inputo = sc.Inputo; if (BsyoriA == 1 && BNsyori == 0) { BNsyori = 1; StartCoroutine("hyouzi"); } if (Inputo == 1 && BNsyori == 1) { BNsyori = 2; StartCoroutine("hihyouzi"); } } public IEnumerator hihyouzi() { Debug.Log("dd"); transform.position = new Vector2(-6, -4); for (float f = 0; f < 16; f++) { transform.Translate(new Vector2(0, -0.125f)); yield return new WaitForSeconds(0.02f); } } public IEnumerator hyouzi() { Debug.Log("dd"); transform.position = new Vector2(-6f, -6); for (float f = 0; f < 16; f++) { transform.Translate(new Vector2(0, 0.125f)); yield return new WaitForSeconds(0.02f); } BNsyori = 0; } void OnMouseOver() { if (Input.GetMouseButtonDown(0) && BNsyori == 0) { BNsyori = 1; sc.Attack(); } }

}


ちなみに、同じような動作をするオブジェクトがもう一つあって、それのスクリプト(下記)は正常に動きます。


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

public class bunseki : MonoBehaviour
{
GameObject BattleManagger;
BattleManager script;

int BNsyori = 0; void Start() { BattleManagger = GameObject.Find("BattleManagger"); script = BattleManagger.GetComponent<BattleManager>(); } // Update is called once per frame void Update() { int BsyoriA = script.BsyoriA; int BsyoriB = script.BsyoriB; int Inputo = script.Inputo; if (BsyoriA == 1 && BNsyori == 0) { BNsyori = 1; script.BsyoriAsyori(); StartCoroutine("hyouzi"); } if (Inputo == 1 && BNsyori == 1) { BNsyori = 2; StartCoroutine("hihyouzi"); } } public IEnumerator hihyouzi() { transform.position = new Vector2(1.3f, -4); for (float f = 0; f < 16; f++) { transform.Translate(new Vector2(0, -0.125f)); yield return new WaitForSeconds(0.02f); } } public IEnumerator hyouzi() { transform.position = new Vector2(1.3f, -6); for (float f = 0; f < 16; f++) { transform.Translate(new Vector2(0, 0.125f)); yield return new WaitForSeconds(0.02f); } BNsyori = 0; } void OnMouseOver() { if (Input.GetMouseButtonDown(0) && BNsyori == 0) { BNsyori = 1; script.Bunseki(); } }

}


BattleManager (必要そうな部分だけ)


public class BattleManager : MonoBehaviour
{
public int Z = 0;
public int flee = 0;//自由に使って良い変数
public Text messagewindow;
public static int PlayerLV;
public int BsyoriA;
public int BsyoriB;
public int m_syori = 0;
//略

public void BsyoriAsyori() { BsyoriA += 1; } public void Bunseki() { MsgB = 1; Inputo = 1; StartCoroutine("Bunsekii"); } public void Attack() { MsgB = 1; Inputo = 1; StartCoroutine("Attackk"); } public void MsgBa() { MsgB = 1; }

説明やコードが理解しがたかったらすみません。抽象的な事でもいいので、警告文やスクリプトが動かない理由として考えられること、手がかりがあれば教えていただけると嬉しいです。

Satokingy👍を押しています

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

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

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

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

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

guest

回答2

0

ベストアンサー

「There are inconsistent line endings in the 'Assets/Attack.cs' script. Some are Mac OS X (UNIX) and some are Windows.」
[訳] 'Assets/Attack.cs'の記述で、整合性のない行末(各行の最後についている"改行"の文字コード)が含まれています。一部はMac OS X (UNIX)のもの(LF(文字コード 0x0A)の1文字で改行されている)、一部はWindowsのもの(CR(文字コード(0x0D)とLF(文字コード(0x0A)の2文字で改行されている))になっている。

という事なので、改行のコードを変更する機能を持ったエディタ(WindowsだとSakura Editorとか、Notepad++とか)で'Assets/Attack.cs'というファイルを開き、改行のコードを変更して上書き保存すると警告が出なくなると思います。

==
ちなみに、昔のMacは改行のコードが、CRの1文字でした。

投稿2019/04/04 04:43

coco_bauer

総合スコア6915

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

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

ssssggg

2019/04/04 04:54

回答ありがとうございます。やってみようと思います。しかし今後こうならないためにはどうすれば良いのでしょうか?
coco_bauer

2019/04/04 05:20

質問のような奇妙なファイルは見たことがないのですが、UNIX改行形式のファイルとWindows改行形式のファイルの間でコピー&ペーストすると改行のコードが混ざったファイルになるかもしれませんね。 稀な例だと思いますから、改行形式を統一する方法を覚えておきさえすれば問題ないのではないでしょうか。
ssssggg

2019/04/04 06:59

ありがとうございました。稀な例だったんですね。何度スクリプトをチェックしても治らなくて困っていたので質問して正解でした。
guest

0

There are inconsistent line endings in the 'Assets/Attack.cs' script. Some are Mac OS X (UNIX) and some are Windows.
This might lead to incorrect line numbers in stacktraces and compiler errors. Many text editors can fix this using Convert Line Endings menu commands.

改行コードが「CR+LF」と「LF」の 2 種類が混在しているという警告です。
一度スクリプトファイルを削除して、作り直せば直ると思います。

開始時に、Debug.Log"AA""dd"が2回ずつ出ます。なのでスクリプトは動いてます。でもAAが二回出るはずがないのでおかしいです。

上記の警告と関連しているか分からないので、修正後にもう一度確認してみてください。

投稿2019/04/04 04:34

nskydiving

総合スコア6500

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問