Key Value Observing
Arklay
$4.99
Date |
Price |
---|---|
日期和时间 |
价钱($) |
03/19(2018) |
3.0 |
07/30(2019) |
4.99 |
11/08(2024) |
4.99 |
Jump AssetStore
This asset provides a lightweight approach to the Key Value
Observing pattern in C#.
[You can check this explanation with images in the
Forum's thread]
Let's start with the basic: what does Key Value Observing
means?
Key Value Observing (or KVO) is a design pattern,
Objective-C implements it at language level, you can read an 'official'
explanation in
Apple's website
But let me try to give a more practical approach:
In object-oriented development one of the most used pattern
(even used without recognizing is a as pattern, most of the time is just the
natural approach) is the Model-View-Controller (or MVC)
It means that what the user (or player) actually sees (the View) is not the actual game model (the
mathematical Model being executed), to lower design coupling and improve cohesion both are separated,
the model fills the values on the View while the View communicates with the model through
a Controller.
Yeah, I know I said I was gonna be practical: let's say we
have a 2D platform game, our hero has a number of lives that will change over
time, he will lose and earn lives, the model will provide the number of lives
and the controller will notify the view when it changes.
Now, what KVO proposes is, instead accessing directly to the
model, the view will subscribe as an observer to a controller that will send
updates when value for the given key changes.
The main advantage will be that we are decoupling completely
the model and the view.
The asset includes 3 examples with different levels of
complexity:
- [LOW] A model of a lives container and a health bar (very similar to the one proposed here)
- [MED] A model for a leader board, where the key observed is a list of values
- [HIGH] A model for a lobby of a multiplayer game, where the model observes a list, and the items of that list
The asset includes source code. I will try to help here whoever needs help with it and/or the KVO pattern.
I use this asset myself and I plan to keep it update as I keep encountering different challenges in real life implementation