我希望能夠使用GameTime
而不用每次在我的所有方法的參數中顯式輸入它的名稱。它在代碼中看起來不太好。我怎樣才能做到這一點?如何在不通過參數傳遞它的情況下使用GameTime?
回答
我剛剛發現GameTime
沒有在整個主更新方法執行更改,這樣我就可以放心地使用它的一個副本在本地GameTime變量,就像這樣:
傳遞參數的好處是OOP的基本原理,但有一個建議是有一個基類,它是用GameTime初始化的,然後擴展它的所有類。這樣你可以作爲受保護的成員訪問它。
public class BaseClass
{
protected BaseClass(GameTime gt)
{
Time = gt;
}
protected GameTime Time {private set; protected get;}
}
public class SomeOtherClass : BaseClass
{
public SomeOtherClass(GameTime gt) : base(gt)
{
}
public void DoSomething()
{
//can access Time here
}
}
我可以爲主遊戲類做到這一點,所以我可以從遊戲的任何方法訪問遊戲時間? – user1306322
你可以傳遞別的東西。我個人通常這樣做:
float seconds = (float)gameTime.ElapsedGameTime.TotalSeconds;
something.Update(seconds);
otherThing.Update(seconds);
這將節省您不得不提取每次你想要使用它的經過時間,以秒爲單位。
如果你想自己節省一點打字,你可以這樣做:
interface IHasUpdate { void Update(float seconds); }
然後,如果你實現你的類IHasUpdate
界面,點擊兩下,或快捷鍵,可以讓Visual Studio爲Update
創建所需的存根。這有一個額外的好處,你將能夠推理對象是IHasUpdate
。
如果你發現自己有過很多「東西」,你可以創建這樣一個結構:
struct UpdateContext { float seconds; PlayerInput input; SomethingElse blah; }
與此有額外的好處,你可以輕鬆地添加新的東西「更新上下文」,如果你需要新的參數到你的Update
方法。
,當然,你通常實際上並不需要知道繪製時的時間,所以你可以跳過它傳遞給Draw
方法完全。
這真的不是一個好主意,做一些其他比傳遞一個說法,概念的時候你有什麼是具體的方法調用給定的「樹」的數據。
公共全局靜態類靜態屬性GameTime,它將在每個Game.Update()開始時更新。所有的對象都會通過這個屬性訪問變量。但是,這被認爲是不好的做法。
- 1. 如何在不使用url的情況下傳遞參數
- 2. 如何在不覆蓋它的情況下傳輸$ exercise參數?
- 3. 如何在不傳遞參數的情況下調用存儲過程?
- 4. 如何在參數未知的情況下使用參數傳遞函數?
- 5. 如何在不使用segue的情況下傳遞數據
- 6. 如何在這種情況下通過引用傳遞價值?
- 7. 如何在以下情況下將參數傳遞給方法?
- 8. 在帶和不帶「」的情況下在C中傳遞參數「」
- 9. 在這種情況下,參數是如何傳遞
- 10. 在不使用GET的情況下在URL中傳遞數據
- 11. 在不激活turtle.onclick的情況下傳遞參數(Python3海龜)
- 12. 在不傳遞參數的情況下創建setColor方法?
- 13. 如何在不立即運行的情況下將參數傳遞給函數?
- 14. 如何在不通過驗證刷新的情況下傳遞值
- 15. 如何不通過URL傳遞參數?
- 16. 如何在不通過brew安裝的情況下使用`psql`
- 17. 在不使用OData約定的情況下傳遞查詢字符串參數?
- 18. 如何在不傳遞參考的情況下在雲端點公開用戶?
- 19. 如何在不將Model作爲參數的情況下將Attribute傳遞給View?
- 20. 如何在不通過AWS API網關預先定義的情況下傳遞URL查詢字符串參數
- 21. 如何在不帶參數的情況下使用spl_autoload_register?
- 22. 如何在不知道參數的情況下使用dll?
- 23. 如何在不使用`-`或`--`的情況下創建參數?
- 24. 如何通過參考傳遞參數?
- 25. 有沒有辦法在不傳遞參數的情況下調用函數?
- 26. 在URL中傳遞參數,然後在未通過驗證的情況下使用'new'操作呈現錯誤
- 27. 如何在不使用類型的情況下使用GET傳遞變量?
- 28. 在沒有命令行的情況下傳遞參數
- 29. 如何在不調用它的情況下查詢javascript函數的參數
- 30. 在這種情況下如何在AJAX數據中傳遞參數
這將工作,但它是一個**不好的做法** - 方法簽名應告訴你一切你需要知道的某種方法。如果你使用全局變量,那麼你的方法沒有輸入到簽名中。這使維護變得困難。 – neeKo
這個項目只是我的,所以我不介意像這樣的東西沒有出現在我的方法的簽名,我會說這是更好的方式。 – user1306322