★お知らせ(2023/12/27)
いつもLive2D公式コミュニティをご利用いただき誠にありがとうございます。
本コミュニティは2023年12月27日 11:00をもって閉鎖いたしました。
今後の運営はすべて新Live2D公式クリエイターズフォーラムに移行します。
閉鎖に伴い、以下機能は利用不可となります。
・アカウントの新規作成
・トピック投稿、返信
たくさんのご利用誠にありがとうございました。
新Live2D公式クリエイターズフォーラムは以下バナーよりご利用いただけます。
なお、本コミュニティに投稿されたトピックはすべて残りますが、今後削除する可能性がございますので予めご了承ください。
閉鎖に関するお問い合わせにつきましてはLive2D公式クリエイターズフォーラムへご連絡ください。
いつもLive2D公式コミュニティをご利用いただき誠にありがとうございます。
本コミュニティは2023年12月27日 11:00をもって閉鎖いたしました。
今後の運営はすべて新Live2D公式クリエイターズフォーラムに移行します。
閉鎖に伴い、以下機能は利用不可となります。
・アカウントの新規作成
・トピック投稿、返信
たくさんのご利用誠にありがとうございました。
新Live2D公式クリエイターズフォーラムは以下バナーよりご利用いただけます。
なお、本コミュニティに投稿されたトピックはすべて残りますが、今後削除する可能性がございますので予めご了承ください。
閉鎖に関するお問い合わせにつきましてはLive2D公式クリエイターズフォーラムへご連絡ください。
コメント
NullReferenceException: Object reference not set to an instance of an object
main.OnRenderObject () (at Assets/Scripts/main.cs:38)
Assets/Scripts/main.csの38行目でエラーのようなので、その部分ってここに載せられますか?
できればその周辺のコードもあると特定し易いと思うのですが。
using UnityEngine;
using System;
using System.Collections;
using live2d;
public class main : MonoBehaviour {
public TextAsset mocFile;
public Texture2D[] textures;
private Live2DModelUnity live2DModel;
// Use this for initialization
void Start () {
Live2D.init ();
live2DModel = Live2DModelUnity.loadModel(mocFile.bytes);
for(int i = 0; i<textures.Length; i++)
{
live2DModel.setTexture(i, textures[i]);
}
}
// Update is called once per frame
void Update () {
}
void OnRenderObject()
{
Matrix4x4 m1=Matrix4x4.Ortho(
-200.0f, 200.0f,
200.0f,-200.0f,
-0.5f,0.5f);
Matrix4x4 m2 = transform.localToWorldMatrix;
Matrix4x4 m3 = m2*m1;
live2DModel.setMatrix(m3); ←ここが38行目です
live2DModel.update();
live2DModel.draw();
}
}
OnRenderObjectの最初で
if(live2dModel==null)return;
としておけばエラーは消えるかなと思います。
もしOnRenderObjectがエディタ上でも呼び出されているとすれば
Live2D.init()を通る前に実行されてしまうので
live2DModelがNullになったままなのではないかなと…。
もし違っていたら申し訳ありません。
このページをそのままコピペしたのだと思います。
http://sites.cybernoids.jp/cubism/sdk_tutorial/platform-setting/unity/csharp/createproject
一応、OnRenderObjectの最初で
if(live2dModel==null)return;
をやってみましたがエラーが出てキャラが表示されませんでした><
対応する側も原因の特定が非常に難しくなりますよ。
それと、エラーが出るタイミング
(実行時に常時繰り返し出ている。エディタ上で既に出ている。特定の操作時に1度だけ等々)
もあれば対応がしやすくなるのではと思います。
OnRenderObjectの最初ということで、この場所でよかったのでしょうか?
void OnRenderObject()
{
if(live2dModel==null)return;
Matrix4x4 m1=Matrix4x4.Ortho(
-200.0f, 200.0f,
200.0f,-200.0f,
-0.5f,0.5f);
Matrix4x4 m2 = transform.localToWorldMatrix;
Matrix4x4 m3 = m2*m1;
live2DModel.setMatrix(m3);
live2DModel.update();
live2DModel.draw();
}
そして、以下のエラーが出てます。
Assets/Scripts/main.cs(31,20): error CS0103: The name `live2dModel' does not exist in the current context
現在のコンテキストにLive2DModelは存在しない…ですかね?
(-ω-;)ウーン
宣言する部分では「private Live2DModelUnity live2DModel;」
32行目の部分では「if(live2dModel==null)return;」
dの文字の大文字小文字が異なっています。
ただフリックやタッチが反応しなくなるのは、別の理由であることがわかりました。
クライアントからのフリックやタッチのアクション変更指示で、モーションのフォルダやファイル名が存在しないものを指定している箇所がありました。
ここで空回りしていたのが原因のようです。
おさがわせして申し訳ありません。
ありがとうございました。