我目前在嘗試更改多人遊戲中光線強度時遇到問題。更改光強度Unity多人遊戲
對於開始遊戲的人,主人來說,光強度變化很好。然而,連接到主機的人,其光強度不會改變。
我想改變使用[SyncVar]的光強度,但連接到主機的玩家根本看不到光強度的變化。這裏是我的代碼:
using UnityEngine;
using System.Collections;
using UnityEngine.Networking;
public class dayNightCycle : NetworkBehaviour { //changes day and night based on the wavelevel SpawnManager_waveLevel.cs script
Light light;
float fadeTime = 1f;
[SyncVar(hook = "OnLightAmountChange")]
float lightAmout = 0f;
SpawnManager_waveLevel level;
public override void OnStartLocalPlayer()
{
light = GetComponentInChildren<Light>();
level = GetComponent<SpawnManager_waveLevel>();
light.intensity = lightAmout;
}
// Update is called once per frame
void Update() {
changeLight();
}
void changeLight()
{
if (isLocalPlayer)
{
if (level.waveCounter == 1)
{
lightAmout = 0.03f;
light.intensity = Mathf.Lerp(light.intensity, lightAmout, fadeTime * Time.deltaTime);
}
else
{
lightAmout = 1f;
light.intensity = Mathf.Lerp(light.intensity, lightAmout, fadeTime * Time.deltaTime);
}
}
}
void OnLightAmountChange(float amount)
{
lightAmout = amount;
changeLight();
}
}
我的問題是,光強度只會改變一個球員,主持人。我希望所有連接到遊戲的玩家都可以改變光線強度。歡迎任何建議。
恐怕這不起作用,因爲我有一個OnStartLocalPlayer()方法,這意味着您編寫的else語句將無法找到燈光對象。 – arjwolf