Let me explain -- I'm just looking for a way that I can link a number to a set of methods. I want to randomly generate a "difficulty" int, and pick out an event based on the number I get. IE, if I get an int of 3 I want that to point to a specific event. What's the best way to accomplish this? I was thinking of story the events in lists, but methods can't be in lists. I thought about making the methods into delegates and putting those in lists but that seems unnecessarily complicated. Also, in the future I think I'd want to put multiple events at each level which would sort of make putting them into array or lists difficult.
\$\begingroup\$
\$\endgroup\$
3
-
3\$\begingroup\$ Delegates are not that complicated. You might want to take another look. Multiple options at each level just means a list of lists. \$\endgroup\$– HouseCommented May 25, 2015 at 6:21
-
\$\begingroup\$ I can suggest also a dictionary of delegates : stackoverflow.com/questions/11503887/… \$\endgroup\$– dnk drone.vs.dronesCommented May 25, 2015 at 7:01
-
\$\begingroup\$ Does Unity accept delegates on a array as component? If so, this could be used. \$\endgroup\$– MVCDSCommented May 25, 2015 at 17:56
Add a comment
|
2 Answers
\$\begingroup\$
\$\endgroup\$
Provided all the events have the same signature:
delegate return_type Event(parameter_list);
Event[] events = { new Event(Event1),
new Event(Event2),
//.....
new Event(EventN) };
//in your caller method
events[random_int](parameters);
Delegates are the fastest and easiest method to accomplish what you want. And if you add more events, just add them to the array. It shouldn't be too difficult ;)
\$\begingroup\$
\$\endgroup\$
So you want to generate a random integer, and use the number generated to choose between a set of events. Seems like the best thing you could use would be switch case
?
Switch :
int caseSwitch = X; //your random generated integer
switch (caseSwitch)
{
case 1: //if it's equal to 1 then
Console.WriteLine("Case 1");
break;
case 2: //if it's equal to 2 then
Console.WriteLine("Case 2");
break;
}
Is this what you're looking for?