【发布时间】:2021-05-25 11:59:06
【问题描述】:
我想更改方法内的外部变量 (var1),以便能够使用 getter 返回它的值。但不知何故 var1 仅在函数内更改,而不是全局更改。如何全局更改方法内部 var1 的值?
代码真的很简单:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;
public class PlayerMovement : MonoBehaviour
{
private float var1 = 0f;
void Update()
{
var1 = 5;
print(var1); // output: 5
}
public float GetVar1()
{
print(var1);
return var1; // output: 0
}
}
update 方法由游戏引擎 unity 本身调用,getter 在另一个类中调用。
调用getter的类在这里:
public class bullet : MonoBehaviour
{
public PlayerMovement playerdata;
private float output;
void Update()
{
output = playerdata.GetVar1();
}
}
【问题讨论】:
-
你能告诉我们调用这些方法的代码吗?
-
这不是一个完整的代码。我所看到的猜测是您在“PlayerMovement”的不同实例上调用“Update”和“GetVar1”。你能添加调用这些方法的代码吗?
-
工作正常:
Update(); var v = GetVar1();按预期打印 5 和 v == 5。也许您尝试了var v = GetVar1(); Update();,因此您得到了 0 和 5。... -
听起来你需要一个静态类或一个单例。
-
调用者没有在
PlayerMovement playerdata实例上调用Update?因此它的值为 0