基本的2D跳转&我正在开发的运行游戏基于这段代码。 https://github.com/angelotadres/RunAndJump基本的3D Unity游戏Singleton抛出NullReferenceException仅在Build
当我运行构建时,Atm会抛出一个NullReferenceException异常。 下面是完整的调试消息:
NullReferenceException: Object reference not set to an instance of an object
at RunAndJump.LevelMetadata.get_SceneName() [0x0000c] in
D:\Dropbox\Dropbox\Unity\RunAndJump-master\Assets\Scripts\Level\LevelMetadata.cs:19
at RunAndJump.LevelHandlerScene+<InitScene>c__Iterator1.MoveNext() [0x0006c] in D:\Dropbox\Dropbox\Unity\RunAndJump-master\Assets\Scenes\LevelHandler\LevelHandlerScene.cs:85
at UnityEngine.SetupCoroutine.InvokeMoveNext (IEnumerator enumerator, IntPtr returnValueAddress) [0x00028] in C:\buildslave\unity\build\Runtime\Export\Coroutines.cs:17
UnityEngine.MonoBehaviour:StartCoroutine_Auto_Internal(IEnumerator)
UnityEngine.MonoBehaviour:StartCoroutine(IEnumerator) (at C:\buildslave\unity\build\artifacts\generated\common\runtime\MonoBehaviourBindings.gen.cs:62)
RunAndJump.<InitSequence>c__Iterator0:MoveNext() (at D:\Dropbox\Dropbox\Unity\RunAndJump-master\Assets\Scenes\LevelHandler\LevelHandlerScene.cs:77)
UnityEngine.SetupCoroutine:InvokeMoveNext(IEnumerator, IntPtr) (at C:\buildslave\unity\build\Runtime\Export\Coroutines.cs:17)
UnityEngine.MonoBehaviour:StartCoroutine_Auto_Internal(IEnumerator)
UnityEngine.MonoBehaviour:StartCoroutine(IEnumerator) (at C:\buildslave\unity\build\artifacts\generated\common\runtime\MonoBehaviourBindings.gen.cs:62)
RunAndJump.LevelHandlerScene:Start() (at D:\Dropbox\Dropbox\Unity\RunAndJump-master\Assets\Scenes\LevelHandler\LevelHandlerScene.cs:58)
这里是problematioc单例类:
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class Session : Singleton<Session> {
private LevelsPackage _levels;
private int _currentLevelId = 0;
private void Awake() {
_levels = Resources.Load<LevelsPackage>(LevelsPackage.ResourcePath);
Debug.Log(_levels);
}
public void PlayLevel(int id) {
_currentLevelId = id;
}
public void PlayNext() {
_currentLevelId++;
}
public LevelMetadata GetLevelMetadata() {
return _levels.metadataList[_currentLevelId -1];
}
public bool HasNext() {
return (_currentLevelId < _levels.metadataList.Count);
}
public int GetLevelId() {
return _currentLevelId;
}
public int GetTotalLevels() {
return _levels.metadataList.Count;
}
}
任何想法,为什么这只是在构建会怎么样? 谢谢!
P.S.所述LevelMetadata类:
这是文件:
using UnityEngine;
using System;
namespace RunAndJump {
[Serializable]
public class LevelMetadata {
public UnityEngine.Object scene;
[SerializeField]
private string levelName;
public string LevelName {
get { return (levelName == null || levelName == "") ? "Untitled" : levelName; }
set { levelName = value; }
}
public string SceneName {
get {
Debug.Log ("Scene Name : " + scene.name);
return scene.name;
}
}
}
}
你怎么知道它的这个类是有问题的?你真的调试过吗? * D:\ Dropbox \ Dropbox \ Unity \ RunAndJump-master \ Assets \ Scripts \ Level \ LevelMetadata.cs:19 *是错误的地方。 *提示:*'RunAndJump.LevelMetadata.get_SceneName' – t0mm13b
我复制了我的问题中的代码。 – Fex