x


Hack and Slash tutorial Stack Overflow problem

Hello, I have followed the Hack and Slash tutorials by BurgZergArcade successfully up to number 30 (Or half way through it at least). At 4:34 on the video, when i try to save the vitals, unity says that I have a StackOverflowException. I am pretty sure from Google searches that this means I have an infinite loop of some kind, but I can't find where it is in my code and I can't find anyone else who has had the same problem. I am quite new to using CSharp in Unity and I was hoping that the tutorials would help me to improve, so it would be a great hep to me if someone could help me out. This is my code for saving the vitals:

 for(int cnt = 0; cnt < Enum.GetValues(typeof(VitalName)).Length; cnt++) {
     PlayerPrefs.SetInt(((VitalName)cnt).ToString() + " - Base Value", pcClass.GetVital(cnt).BaseValue);
     PlayerPrefs.SetInt(((VitalName)cnt).ToString() + " - Exp To Level", pcClass.GetVital(cnt).ExpToLevel);
     PlayerPrefs.SetInt(((VitalName)cnt).ToString() + " - Cur Value", pcClass.GetVital(cnt).CurValue);
 }


Thanks,
Dan205

more ▼

asked Apr 29, 2012 at 02:03 PM

Dan205 gravatar image

Dan205
20 19 14 20

(comments are locked)
10|3000 characters needed characters left

1 answer: sort voted first

This piece of code can't cause a stackoverflow. Maybe your GetVital function is causing it. Are you even sure that this is causing it? Have you tried to comment out this part?

Infinite loops just freeze your application. The most common reason for a stack overflow is an end recursion. In other words a function is calling itself without a reasonable break-condition. This can be directly or indirectly.

 // direct:
 void Foo()
 {
    Foo();
 }
 
 // indirect:
 void Foo()
 {
    Bar();
 }
 void Bar()
 {
    Foo();
 }

Each function call will push the return address on the stack and create the local stack frame for the function. When the function exits this is cleaned up, but you never leave the function so the stack grow until you run out of stack memory.

more ▼

answered Apr 29, 2012 at 02:23 PM

Bunny83 gravatar image

Bunny83
79.6k 27 110 351

Thank you! You're right. I commented each of the 3 playprefs out and found that the last one was the problem. I then looked at the original script (As you said, the GetVital() function) and found that in actual fact all it was was a capitalisation error. Silly me!

Apr 29, 2012 at 02:28 PM Dan205
(comments are locked)
10|3000 characters needed characters left
Your answer
toggle preview:

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this question

By Email:

Once you sign in you will be able to subscribe for any updates here

By RSS:

Answers

Answers and Comments

Topics:

x4142
x519
x395
x44
x8

asked: Apr 29, 2012 at 02:03 PM

Seen: 2036 times

Last Updated: Apr 29, 2012 at 02:28 PM