我需要將 rgb 變數傳遞給 OnPhotonSerializeView。
我試著這樣做:
public void OnPhotonSerializeView(PhotonStream stream, PhotonMessageInfo info)
{
if (stream.IsWriting)
{
stream.SendNext(healthCircle.color.r);
stream.SendNext(healthCircle.color.g);
stream.SendNext(healthCircle.color.b);
}
else
{
healthCircle.color.r = (float)stream.ReceiveNext();
healthCircle.color.g = (float)stream.ReceiveNext();
healthCircle.color.b = (float)stream.ReceiveNext();
}
}
在此之后我得到一個錯誤:
Assets\Scripts\Player.cs(68,13): error CS1612: Cannot modify the return value of 'SpriteRenderer.color' because it is not a variable
我試圖在谷歌搜索它,但我沒有找到任何東西。對不起我的菜鳥問題。等待您的幫助:)
uj5u.com熱心網友回復:
SpriteRenderer.color(就像 Unity 中的大多數東西一樣)是一個屬性,它要么回傳要么接受一個完整Color的賦值。
除此之外,這Color是一個struct按值復制,而不是參考型別,所以即使你可以這樣做,這里會發生什么
- 你回傳當前
healthCircle.color - 在這個回傳
Color值上你分配例如r = (float)stream.ReceiveNext();
=> 所以這個
- 將始終回傳一個新
Color實體,即當前實體的副本,并僅在其中分配一個組件 - 將沒有效果,因為
healthCircle.color從未實際分配過新值
你想要做的不是
var color = healthCircle.color;
color.r = (float)stream.ReceiveNext();
color.g = (float)stream.ReceiveNext();
color.b = (float)stream.ReceiveNext();
healthCircle.color = color;
或直接做
healthCircle.color = new Color((float)stream.ReceiveNext(), (float)stream.ReceiveNext(), (float)stream.ReceiveNext());
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/424492.html
上一篇:Unity我可以從可撰寫腳本的物件中實體化游戲物件嗎?-解決了
下一篇:列印時Unicode有不同的寬度
