モデルの名前に特定の文字の組み合わせが含まれている場合、Live2D Unity SDK読み込むことができません

モデルの名前に特定の文字の組み合わせが含まれている場合、Live2D Unity SDKを使用するソフトウェアではそのモデルを読み込むことができません。
これはLive2D Unity SDKのバグです。

誰も報告していないようなので、この問題をここにコピーしました。

問題は「宵夜97」さんが提起したもので、具体的な内容は以下の通りです:

バグが発生する文字:

中国語の範囲内で、バグを引き起こす前の文字と後の文字にはそれぞれ82の文字があります。それらを任意に組み合わせると、何千もの組み合わせが存在します。

前の文字一覧:

乜、作、停、兜、剜、卜、呜、啜、噜、坜、塜、奜、婜、孜、屜、嵜、幜、彜、恜、慜、扜、捜、憜、敜、晜、杜、桜、楜、橜、歜、汜、浜、湜、潜、灜、煜、牜、獜、瑜、畜、癜、睜、硜、祜、穜、筜、籜、磜、繜、罜、聜、腜、艜、荜、藜、蕜、虜、蝜、衜、襜、詜、譜、豜、赜、蹜、轜、遜、酜、鉜、鍜、鐜、镜、陜、靜、顜、饜、驜、魜、鱜、鵜、鹜、齜

後の文字一覧:

乵、併、偵、兵、創、卵、呵、啵、噵、坵、塵、奵、婵、孵、屵、嵵、幵、彵、恵、慵、扵、捵、摵、敵、晵、杵、桵、極、橵、歵、汵、浵、湵、潵、灵、煵、牵、獵、瑵、畵、癵、睵、硵、祵、穵、筵、籵、絵、繵、罵、聵、腵、艵、荵、葵、蕵、虵、蝵、衵、襵、詵、譵、豵、赵、蹵、轵、遵、酵、鉵、鍵、鑵、镵、陵、靵、页、饵、驵、魵、鱵、鵵、鹵、齵

組み合わせ例:卜灵、汜葵、孜陵、杜婵

問題の発生場所はSDK内のJSONパーサーにあります。Live2D Unity SDKのJSON解析には、Unityの標準JSON解析と独自実装のJSON解析が混在しており、問題はLive2D独自のJSON解析に起因しています。

異常が発生する行では、エスケープシーケンス「\u」が出現すると、SDKは例外をスローし、Unicodeエスケープシーケンスをサポートしていないと通知します。

0xFFは2進数で11111111に相当します。

では、「卜灵」の2文字に対して上記の操作を行うとどうなるでしょうか?

はい、中国語はダブルバイト文字であり、SDKはシングルバイトのビットANDを使用して文字を切り捨てるため、「卜灵」を誤って「\u」と認識し、例外をスローしてモデルの読み込みに失敗します。

その後、中国語文字を順にビットANDで処理することで、誤判定が発生するすべての文字を特定することができました。
ソースリンク:bilibili CV33867751

@月_十

いつも弊社製品をご愛顧のほど誠にありがとうございます。
Live2Dスタッフでございます。

報告ありがとうございます。

こちらの不具合は、C#では2バイトであるchar型を、1バイトとして扱っていることが原因です。
以下のように修正することで解決できます。

c2 = (char)(str[i] & 0xFFFF);

この修正は今後のSDKの更新に含まれます。

よろしくお願いいたします。

「いいね!」 1