Game Development Reference
In-Depth Information
The following are the comments for code sample 6-20:
Line 01 : To accept a potentially infinite number of arguments,
use the params keyword and declare the argument as an array type
Line 05 : The params argument can be accessed like a regular array
Language Integrated Query
Obviously, games work with lots of data. They work with not just strings but also with
objects, databases, tables, documents, and plenty more, too many to list here. However,
despite the extensiveness and variety of data, there's always a common need to filter it,
viewing smaller subsets of it as is relevant to our needs at the time. For example, given
a complete array (or enumerated list) of all wizard objects in the scene, we might want
to restrict the results even further, viewing only wizards whose health is less than 50
percent and whose defense points are less than 5. The purpose is, perhaps, to initiate
a mass flee behavior on the wizards to find a nearby potion and restore their health
before resuming an attack on the player. Let's now consider the implementation of this
scenario and how a technology, Linq, can help us.
A complete Linq sample project can be found in the topic's companion
files (code bundle) at Chapter06\Linq\ .
First, a very basic and sample definition of a wizard enemy class can be given, as
shown in the following code sample 6-21. This class includes both the Health and
Defense member variables that are critical to our behavior logic:
//-------------------------------------------
using UnityEngine;
using System.Collections;
//-------------------------------------------
public class Enemy : MonoBehaviour
{
public int Health = 100;
public int Mana = 20;
public int Attack = 5;
public int Defense = 10;
}
//-------------------------------------------
Now, given a collection of all enemy objects in the scene, we could filter the data into
a smaller array according to our criteria with the code, as shown in the following
code sample 6-22.
 
Search WWH ::




Custom Search