中易网

unity中给自定义类中的属性赋值,报错“Object reference not set to an instance of an object”

答案:2  悬赏:0  
解决时间 2021-02-03 17:24
代码如下:
//这是我定义的一个坐标结构类
Coordinate.cs
using UnityEngine;
using System.Collections;

public class Coordinate {
private float chess_x;
private float chess_y;
public float x {
get{
return chess_x;
}
set{
chess_x = value;
}
}
public float y {
get{
return chess_y;
}
set{
chess_y = value;
}
}
}
//才下面的文件中new一个Coordinate 的二维数组类型,然后给其中属性赋值
ChessBoard.cs
using UnityEngine;
using System.Collections;

public class ChessBoard : MonoBehaviour {
Coordinate[,] chessBoardPos;
void Start () {
//初始化一个空的二维数组
chessBoardPos = new Coordinate[8, 8];
//这里是举个例子。我尝试了各种办法去给这个自定义的类的二维数组中的属性赋值。但是总是报错

chessBoardPos[1,1].x= 1.111f;
}
}
最佳答案
改成这样
using UnityEngine;
using System.Collections;

public class ChessBoard : MonoBehaviour {
Coordinate[,] chessBoardPos;
void Start () {
chessBoardPos = new Coordinate[8,8];
chessBoardPos [1, 1] = new Coordinate ();
chessBoardPos[1,1].x= 1.111f;
}
}

你这样相当于
chessboardpos[1,1] = null;
chessboardpos[1,1].x = 1.111f
是空的咋赋值都会告诉你
Object reference not set to an instance of an object
全部回答
clone是不是被自己的脚本回收了? 你的clone的内存已经被释放了, 查一下prefab(子弹吗?)的脚本。 很有可能timer没有同不好或者逻辑上的错误, 被delete了
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
飞利浦显示器107s6开机时啪啪响,屏幕无显示
《爱情公寓》 15集33分59秒 他们举办派对 吕
发布招聘信息的app有没有?想用一款。
合伙开公司股东之一被强行辞退,如何申请赔偿
特长生和普通生有什么区别?
用两个字形容凝聚美好的瞬间
涟水县涟城镇渠北路社区居民委员会地址有知道
狮跑自动变速箱2档换3挡顿挫感强烈
帮忙起个有关吸血鬼的英文名字(男)
我想问一下艾普宽带好用吗?谁用过?
牙骨村在什么地方啊,我要过去处理事情
汗斑俗称花斑癣,吃什么药或注射?
TATA木门可以定做阳台门吗?
购自营海外购怎么样,是正品吗?
怎样弄三维动画?自学能学会吗?
推荐资讯
广西哪里有美纹纸胶带厂家直销?
我想在在网上送餐需要做些什么
成教的可以考教师资格证么?可以考江西省的教
猪骨和红罗卜白银耳黑木耳一起煮有毒吗
已知a,b互为相反数,a,d互为倒数,m的绝对值
一个月用二十吨要多少钱
新海小学家长学校地址在哪,我要去那里办事
发动机缸压不够的原因有几种?
宝鸡高新四路怎么了
Oracle中系统日期函数是什么啊?
前委大道生活超市地址在哪,我要去那里办事
在5173付了款怎么通知卖家钱已经付了?
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?