2 shenhuan111 shenhuan111 于 2014.12.12 22:52 提问

C#在脚步中创建别的脚步类对象cs cs1=new cs();会有警告,如何消除

You are trying to create a MonoBehaviour using the 'new' keyword. This is not allowed. MonoBehaviours can only be added using AddComponent(). Alternatively, your script can inherit from ScriptableObject or no base class at all
MonoBehaviour:.ctor()
cs:.ctor()
什么情况
You are trying to create a MonoBehaviour using the 'new' keyword. This is not allowed. MonoBehaviours can only be added using AddComponent(). Alternatively, your script can inherit from ScriptableObject or no base class at all这个出现好几次

using UnityEngine;
using System.Collections;
public class csmouspo : MonoBehaviour {
cs cs1=new cs();
void Start(){
int i=this.cs1.cshs();
print ("r:"+i+"\n");
}

using UnityEngine;
using System.Collections;
public class cs : MonoBehaviour {
public int cshs() {
return 1; }
}

5个回答

caozhy
caozhy   Ds   Rxr 2014.12.12 23:41
已采纳

这个不是C#的错误,只能翻译下:
你正在试图用new关键字创建一个MonoBehaviour,这是不允许的。MonoBehaviours只能通过AddComponent()被添加,或者,你的脚本可以从ScriptableObject继承或者根本没有基类。

shenhuan111
shenhuan111 我刚才又看了一下,是我的基类是MonoBehaviour这个在派生类创建时,创建了基类的,那要如何解决这个呢,我的基类好像禁止创建的
接近 3 年之前 回复
qq_16848557
qq_16848557   2016.04.27 11:35

cs 的类完全没必要继承Mono的,继承没必要多用,能不能则不添加,这样才是高效的代码,(~ o ~)Y

testcs_dn
testcs_dn   Rxr 2014.12.13 19:04

cs cs1=new cs(); 改成cs cs1=cs.AddComponent();

shenhuan111
shenhuan111 没有这么写的吧,这时什么语言的用法,我这时类对象的创建,不是加组件??是不是看错了,我也不是很了解,所以可以解释一下吗??我哪里可是报错喔
接近 3 年之前 回复
testcs_dn
testcs_dn   Rxr 2014.12.14 10:09

改成cs cs1=MonoBehaviour.AddComponent();呢,只是根据错误提示来说应该是这样解决。

shenhuan111
shenhuan111 不过你有回答很感激
接近 3 年之前 回复
shenhuan111
shenhuan111 朋友你这样写是不对的,MonoBehaviour这个类的对象只能通过手动添加,代码添加是错误的,你这样写是没根据的,同时警告你也没看清楚就回答了
接近 3 年之前 回复
DOwnstairs
DOwnstairs   2016.04.26 19:35

cs cs1=this

Csdn user default icon
上传中...
上传图片
插入图片