StringBuilderを使用していくつかの文字列をマージし、それらをUnityEngineのEditorGUIUtility.systemCopyBufferに渡したいとします。文字列の1つに改行文字が含まれていますが、EditorGUIUtility.systemCopyBufferの内容を貼り付けるときには表示されません。私は改行文字を自分で追加することはできません。何個あるか、どこにいるのか分かりません。Unity EditorGUIUtility.systemCopyBuffer、StringBuilder改行文字を含む文字列を追加します。
// This string is in my real code unknown to me.
// I also don't know the format of the newline characters.
string description = "A long description\nwith multiple lines.";
var builder = new StringBuilder();
builder.Append("Name: ");
builder.AppendLine(someObject.Name);
builder.Append("Description: ");
builder.AppendLine(description);
Debug.Log(builder.ToString());
EditorGUIUtility.systemCopyBuffer = builder.ToString();
ユニティコンソールにDEBUG.LOGによって印刷され、予想される出力は、次のとおりです。
Name: A name
Description: A long description
with multiple lines.
だから、StringBuilderのは、それを処理することができます。しかし、テキストを例えばメモ帳は、それは次のようになります。
Name: A name
Description: A long descriptionwith multiple lines.
ので、システムのコピーバッファは、StringBuilderのが追加されます改行ではなく、元の文字列に存在するものを扱うことができます。 EditorGUIUtility.systemCopyBufferに元の文字列からの改行を何らかの形で含めることはできますか?
私が不明な場合は申し訳ありません。残念ながら、私は改行を入力しない、彼らは他のシステムから来ています。人々は複数の異なるオペレーティングシステムでこれらの記述を入力することができるので、改行の性質はわかりません。 – Helena
異なるOSに改行を入力する方法はいくつかあります。 Windowsは\ r \ n、Macは\ r、UnixとLinuxは\ n –
はい、わかっています。私が扱う文字列には、それらをすべて含めることができます。例えば、誰かが自分のMacに文字列 "description"の内容を入力できるようにしたいのですが、それを読んで、上記の方法でWindows上で行末を保持できるはずです。または他のOSの組み合わせ。 StringBuilderはそれを処理できるようです。多分UnityのEditorGUIUtility.systemCopyBufferは単に十分スマートではありません:) – Helena