Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 12 Next capture
2021 2022 2023
1 capture
12 Jun 22 - 12 Jun 22
sparklines
Close Help
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
  • Asset Store
  • Get Unity

UNITY ACCOUNT

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account
  • Blog
  • Forums
  • Answers
  • Evangelists
  • User Groups
  • Beta Program
  • Advisory Panel

Navigation

  • Home
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
    • Blog
    • Forums
    • Answers
    • Evangelists
    • User Groups
    • Beta Program
    • Advisory Panel

Unity account

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account

Language

  • Chinese
  • Spanish
  • Japanese
  • Korean
  • Portuguese
  • Ask a question
  • Spaces
    • Default
    • Help Room
    • META
    • Moderators
    • Topics
    • Questions
    • Users
    • Badges
  • Home /
This question was closed Aug 11, 2017 at 04:48 PM by Igor_Vasiak for the following reason:

The question is answered, right answer was accepted

avatar image
0
Question by Igor_Vasiak · May 29, 2017 at 12:15 PM · c#scripting probleminventory systemaddingfieldinfo

Trouble with adding value using FieldInfo.SetValue(this, int + int)

I'm creating a simple inventory script for my game. When the player collides (using OnTriggerEnter2D) with the item (let's say it is a int Iron) it checks for the name of the item, so the inventory knows what to do next. Then I add the item to a int (int Iron) USING THE NAME OF THE ITEM DROP (witch in this case is Iron).

My script is meant to be as clean and as readable as possible, so I did this:

  using System.Collections;
  using System.Collections.Generic;
  using UnityEngine;
  using System.Reflection;
  using System.Linq;

  public class PItems : MonoBehaviour
  {
     [SerializeField]private string[] itemTags;

     //Basic Materials
     public int Carbon;

     public void AddItem(Collider2D other, int amount)
     {
         int item = (int)this.GetType().GetField(other.name, BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.NonPublic).GetValue(this);
         (int)GetType().GetField(other.name, BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.NonPublic).SetValue(this, item + amount);

            Debug.Log(Carbon);
     }

     private void OnTriggerEnter2D(Collider2D other)
     {
         if (itemTags.Contains(other.name)) {
             AddItem(other,1);
             Debug.Log(Carbon);
         }
     }
 }

But Visual Studio keeps telling me at AddItem that I cant convert a void into a integer. But where the hell am I converting things in here (I mean, I know witch line, but I don’t know where IN the line)? I just want it to work, and IT DOESN'T! Why things in Unity doesn't just work as they're meant to be?!

Comment
Add comment · Show 2
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image ShadyProductions · May 29, 2017 at 12:20 PM 0
Share

At

 (int)GetType().GetField(other.name, BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.NonPublic).SetValue(this, item + amount);

You are converting to an integer.

Why you make things so complicating, just make an Item object that is not derived from $$anonymous$$onoBehaviour and an Inventory class that has the AddItem method which you pass your item to.

avatar image Igor_Vasiak ShadyProductions · May 29, 2017 at 01:23 PM 0
Share

@ShadyProductions Since I have multiple items and I’m not that expert with C# I have chosen to do it this way. But if you could show me another method that uses ONLY ONE script as short as $$anonymous$$e I wold thanks, ‘cause I don’t know how to do this method you said. Actually, I would like to know if there is any way to make Visual Studio and Unity accept this and not get the conversion error, but still working with integers. But anyway, thanks for giving your time to answer me.

1 Reply

  • Sort: 
avatar image
0
Best Answer

Answer by Igor_Vasiak · May 29, 2017 at 02:31 PM

Ok, besides my incredible ignorance, my error was just that (int) at line 17. That was the mistake. Have taken a while to figure it out, but now it's working propperly. The worst thing is that there's no answer to these cases at any place on the web. But, whatever, I already have figured it out.

Comment
Add comment · Show 2 · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image ShadyProductions · May 29, 2017 at 05:44 PM 1
Share

That's because it's basic C# knowledge, not unity specific.

avatar image Bunny83 ShadyProductions · May 29, 2017 at 07:11 PM 0
Share

Exactly. The signature of the SetValue method is well documented. As you can see the method doesn't return any value (void). Therefore you can't cast the return value to "int".

Follow this Question

Answers Answers and Comments

336 People are following this question.

avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image

Related Questions

Multiple Cars not working 1 Answer

Distribute terrain in zones 3 Answers

Passing data between EditorWindows 0 Answers

How do i change the text color on GUI.Label ? 1 Answer

How do i make the player to walk to where the mouse cursor position was clicked ? 0 Answers


Enterprise
Social Q&A

Social
Subscribe on YouTube social-youtube Follow on LinkedIn social-linkedin Follow on Twitter social-twitter Follow on Facebook social-facebook Follow on Instagram social-instagram

Footer

  • Purchase
    • Products
    • Subscription
    • Asset Store
    • Unity Gear
    • Resellers
  • Education
    • Students
    • Educators
    • Certification
    • Learn
    • Center of Excellence
  • Download
    • Unity
    • Beta Program
  • Unity Labs
    • Labs
    • Publications
  • Resources
    • Learn platform
    • Community
    • Documentation
    • Unity QA
    • FAQ
    • Services Status
    • Connect
  • About Unity
    • About Us
    • Blog
    • Events
    • Careers
    • Contact
    • Press
    • Partners
    • Affiliates
    • Security
Copyright © 2020 Unity Technologies
  • Legal
  • Privacy Policy
  • Cookies
  • Do Not Sell My Personal Information
  • Cookies Settings
"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges