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 /
  • Help Room /
avatar image
0
Question by OrganizedChaos · Jan 19, 2016 at 07:17 PM · c#scripting problemfunction

When I call a function, It doesn't run completely

So this is a really weird occurrence for me, I've never had something like this happen. The function is being called from my weapon manager script, and it is to pick up the weapon. All it's doing is assigning it to some indexing array GameObject variables, calling the deploy function in the game object attached to the player, and then destroying the GameObject. The code works, however for some reason the first time I press the action key, it calls the Deploy() function (but doesn't run it fully) and also doesn't destroy the game object. The second time I press it, the game object is destroyed, and the rest of the deploy function is played.

Is this perhaps because the button call is only on the frame? I was to the understanding if a function is called, it is ran in its entirety. Code posted below:

Weapon Manager Script:

 void Update()
 {
     if (Physics.Raycast(cam.position, cam.forward, out hit, distanceToPickup))
     {
         if (hit.collider.tag == "Weapon" && Input.GetButtonDown("Action"))
         {
             WeaponIndex index = hit.collider.GetComponent<WeaponIndex>();

             if (currentGun != null)
             {
                 currentGun.GetComponent<Firearm>().Deselect();
             }

             AvailableWeapons[index.weaponIndex] = WeaponsInGame[index.weaponIndex];
             AvailableWeapons[index.weaponIndex].GetComponent<Firearm>().Deploy();

             Destroy(hit.collider.gameObject);

         } else if (hit.collider.tag == "Weapon")
         {
             Debug.Log("Press E to pickup");
         } else {
             Debug.Log("You're staring at nothing");
         }
     }
 }

Weapon Script (Called "Firearm"):

 public void Deploy()
 {
     gameObject.SetActive(true);

     aSource.clip = deploy;
     aSource.Play();
     //play deploy animation
 }
Comment
Add comment · Show 3
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 vintar · Jan 19, 2016 at 07:29 PM 0
Share

You are probably destroying the object before it has a chance to play its animation. Just move the destroy call to the deploy method. Ideally the Deploy method would be a coroutine, and you would yield for the length of the animation clip, then destroy the object. Also I think doing a GetComponent on a disabled object wont work, try this maybe :

 AvailableWeapons[index.weaponIndex].SetActive(true);
 StartCoroutine(AvailableWeapons[index.weaponIndex].GetComponent<Firearm>().Deploy());
 
 public IEnumerator Deploy()
 {
     aSource.clip = deploy;
     aSource.Play();
     yield return new WaitForSeconds(deploy.Length);
     Destroy(gameObject);
 }


avatar image OrganizedChaos vintar · Jan 19, 2016 at 07:39 PM 0
Share

The object I'm trying to destroy is the scene model. The first time I press E the weapon appears in the player's hands, the second time I press it the scene model is destroyed, and the deploy audio is played. I've tried moving the destroy call up before (so it's destroyed before it's picked up so it's the illusion that it's the same gun) and I moved the play audio function up, and nothing happened.

I'm not trying to play an animation yet (I haven't made it yet, I just commented in there for my sake) however thanks for the coroutine comment. I was planning on changing my reload function to a coroutine as well.

Thanks for the reply!

avatar image OrganizedChaos vintar · Jan 20, 2016 at 04:46 AM 0
Share

I just tried commenting out the audio command, and it worked fine. Not sure why that would have anything to do with it.

0 Replies

· Add your reply
  • Sort: 

Your answer

Hint: You can notify a user about this post by typing @username

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

Answers Answers and Comments

62 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

Related Questions

[SOLVED]My code line don't execute 1 Answer

Running C# Function from JS file 0 Answers

is there a way to save data on Android before quit? 1 Answer

The laser problems 0 Answers

Add 2D Skeleton to the Scene if Button was pressed 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