Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使update方法内部的值保持一致_C#_Unity3d - Fatal编程技术网

C# 如何使update方法内部的值保持一致

C# 如何使update方法内部的值保持一致,c#,unity3d,C#,Unity3d,我有一个脚本,它从一个脚本中获取一个转换值,该脚本使用其更新方法完成获取操作,并且在另一个脚本中获取该值后,我也使用该值,该脚本在其更新方法中也使用该值。所以,我想做的是,一旦我得到这个值,我希望这个值是相同的,即使它的起始值改变了。我不能在start函数中分配它们,因为一切都是在运行时发生的。我试图创建一个方法来分配这个值,即使我使用了一个if语句,导致该方法被调用一次,它仍然会更改其值 这是我使用的代码行,它们都在Update方法中 void Update() { 调试日志(i); if(d

我有一个脚本,它从一个脚本中获取一个转换值,该脚本使用其更新方法完成获取操作,并且在另一个脚本中获取该值后,我也使用该值,该脚本在其更新方法中也使用该值。所以,我想做的是,一旦我得到这个值,我希望这个值是相同的,即使它的起始值改变了。我不能在start函数中分配它们,因为一切都是在运行时发生的。我试图创建一个方法来分配这个值,即使我使用了一个if语句,导致该方法被调用一次,它仍然会更改其值

这是我使用的代码行,它们都在Update方法中

void Update()
{
调试日志(i);
if(dragandrop.finding==true)
{
B=DragAndDrop.lastposofmodel;
在这里,我使用指定的值

if(modelobject.collider.gameObject.GetComponent().enabled==true)
{
repmodel=modelobject.collider.gameObject;
发现=真;
modelobject.collider.gameObject.transform.position=新矢量3(modelobject.collider.gameObject.transform.position.x,
modelobject.collider.gameObject.transform.position.y,
modelobject.collider.gameObject.transform.position.z-0.1f);
lastposofmodel=modelobject.collider.gameObject.transform;
这就是赋值的地方


如何解决这个问题?

我认为问题在于,B是一个静态值,因此通过引用而不是通过值调用。因此,如果您希望每个脚本的值B保持唯一,您可能应该为每个脚本的值的每个表示创建一个实例。

对不起,我不知道您的目标/任务是什么ion是…你能为你的代码添加更多的上下文吗?我想做的是,在用你看到的第二个脚本获取值,并将该值赋给你可以从第一个脚本中看到的另一个值,并保持该值不变,即使它在update方法中。那么为什么它不保持不变呢?你的第二个脚本同时修改脚本?可能只需说:
if(!B)B=DragAndDrop.lastposofmodel;
?所以除非它被破坏,否则B将永远保持不变。我认为,为什么它不一样,是因为它们在更新方法中,但我将尝试您建议的方法。很难说到底何时和如何调用底部代码块,以及为什么需要通过mul传递引用tiple Scripts如果通过引用或值调用某个对象是字段类型的问题…如果它是类类型,则始终是通过引用调用的。如果它是结构或基类型,如
int
则通过值调用…与
静态
无关