C# Unity中的非静态字段需要对象引用

C# Unity中的非静态字段需要对象引用,c#,unity3d,C#,Unity3d,基本上,我想从脚本simpleLatt到WriteJson获取浮点变量。所有这些都是在Unity 5.6和Visual Studio 2015中完成的。有人能给我解释一下我做错了什么吗 simple.cs WriteJson.cs 使用系统集合; 使用System.IO; 使用UnityEngine; 使用LitJson; 使用DigitalRuby.simpleout; 公共类写作:单一行为{ 公共单纯形脚本; //用于初始化 无效开始(){ GameObject-camera=GameObj

基本上,我想从脚本simpleLattWriteJson获取浮点变量。所有这些都是在Unity 5.6和Visual Studio 2015中完成的。有人能给我解释一下我做错了什么吗

simple.cs

WriteJson.cs

使用系统集合;
使用System.IO;
使用UnityEngine;
使用LitJson;
使用DigitalRuby.simpleout;
公共类写作:单一行为{
公共单纯形脚本;
//用于初始化
无效开始(){
GameObject-camera=GameObject.Find(“camera”);
SimpleLatt SimpleLatt=camera.GetComponent();
}
公共类颜色校正设置
{
公众浮标;
公众浮标;
公众浮存金饱和;
公共交通灯亮;
公共浮动JsonContrast;
公共颜色校正设置(float JsonHue、float JsonAmount、float JsonSaturation、float JsonBrightness、float JsonContrast)
{

simpleLatt.Hue=JsonHue;//这是您的
simpleLatt
脚本:

public class SimpleLUT : MonoBehaviour
{
    [Range(0, 360)]
    [Tooltip("Hue")]
    public float Hue = 0.0f;
}
无法使用
simpleLatt.Hue=JsonHue;
直接访问
Hue
变量,因为Hue变量不是
静态变量

您有两种选择:

1。将
色调设置为静态

因此,
public float Hue=0.0f;
应该是
public static float Hue=0.0f;

我确信你不会想要这个,因为当你把它设置为静态时,它不会显示在编辑器中

2。创建SimpleLatt的实例或获取该实例

查找SimpleLatt所连接的GameOjbect:

GameObject obj = GameObject.Find("GameOjbectSimpleLUTScriptIsAttachedTo");
获取附加到该游戏对象的
simpleLatt
脚本实例:

SimpleLUT simpleLUTInstance = obj.GetComponent<SimpleLUT>();
最后,这是它应该是什么样子:

public ColorCorrectionSettings(float JsonHue, float JsonAmount, float JsonSaturation, float JsonBrightness, float JsonContrast)
{
    GameObject obj = GameObject.Find("GameOjbectSimpleLUTScriptIsAttachedTo");
    SimpleLUT simpleLUTInstance = obj.GetComponent<SimpleLUT>();
    simpleLUTInstance .Hue = JsonHue; //<- No more error
}
public color corrections设置(float JsonHue、float JsonAmount、float JsonSaturation、float JsonBrightness、float JsonContrast)
{
GameObject obj=GameObject.Find(“gameojbectsimplatescriptisattachedto”);
SimpleLattSimpleLattInstance=obj.GetComponent();

SimpleDataInstance.Hue=JsonHue;//为什么不将
SimpleDatat
的引用传递到
ColorCorrectionSettings
的构造函数中?什么使您认为它应该工作?
ColorCorrectionSettings
没有名为
SimpleDatat
的属性,而且
Hue
属性不是静态的?我是这里的新手你愿意解释一下或者给我一些像样的帮助吗?我建议你读一本关于c#的基础知识的书。如果你只是想知道你的具体问题,看看静态成员和实例成员之间的区别。你这里的错误是打字错误。将
simplelat.Hue
更改为
simplelat.Hue
(将引用从静态类引用更改为实例引用)啊哈!所以实例应该在链接之前。感谢您的最后一次查看。如果
SimpleLatt
连接到游戏对象,则该实例存在于该游戏对象上。如果它未连接到任何游戏对象,您可以使用
AddComponent
创建新实例,因为
SimpleLatt
继承自
MonoBehavior
。有关更多信息,请参阅。
SimpleLUT simpleLUTInstance = obj.GetComponent<SimpleLUT>();
simpleLUTInstance.Hue = JsonHue;
public ColorCorrectionSettings(float JsonHue, float JsonAmount, float JsonSaturation, float JsonBrightness, float JsonContrast)
{
    GameObject obj = GameObject.Find("GameOjbectSimpleLUTScriptIsAttachedTo");
    SimpleLUT simpleLUTInstance = obj.GetComponent<SimpleLUT>();
    simpleLUTInstance .Hue = JsonHue; //<- No more error
}