方法不改变外部变量 C#
Method is not changing outer variable C#
我想更改方法内的外部变量 (var1) 以便能够使用 getter 到 return 它的值。但不知何故 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
}
}
更新方法由游戏引擎统一调用,getter在另一个class中调用。
调用getter的class在这里:
public class bullet : MonoBehaviour
{
public PlayerMovement playerdata;
private float output;
void Update()
{
output = playerdata.GetVar1();
}
}
如果您希望 bullet
实例的 output
为 5,则需要先在 playerdata
实例上调用 Update()
:
public class bullet : MonoBehaviour
{
public PlayerMovement playerdata;
private float output;
void Update()
{
playerdata.Update();
output = playerdata.GetVar1();
}
}
我还注意到,除非 bullet
是不完整的代码,否则您不会创建 PlayerMovement
class 的实例,因此您将得到 NullReferenceException
。
我想更改方法内的外部变量 (var1) 以便能够使用 getter 到 return 它的值。但不知何故 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
}
}
更新方法由游戏引擎统一调用,getter在另一个class中调用。
调用getter的class在这里:
public class bullet : MonoBehaviour
{
public PlayerMovement playerdata;
private float output;
void Update()
{
output = playerdata.GetVar1();
}
}
如果您希望 bullet
实例的 output
为 5,则需要先在 playerdata
实例上调用 Update()
:
public class bullet : MonoBehaviour
{
public PlayerMovement playerdata;
private float output;
void Update()
{
playerdata.Update();
output = playerdata.GetVar1();
}
}
我还注意到,除非 bullet
是不完整的代码,否则您不会创建 PlayerMovement
class 的实例,因此您将得到 NullReferenceException
。