• 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 /
avatar image
Question by Henrique · Jan 06, 2011 at 12:15 PM · guinetworkingnetwork

networkview + GUI

I got a problem with my multiplayer FPS:

The LIFE of each character must be shown to each player.

My problem is that both LIFE variables are showed to each player, then for exemple: If player1 is life=100 and player2 is life=5, what is showed to each player is "LIFE 100" + "LIFE 5", one over another, then it looks like 500 or something like...

I must show each 'life' variable to each player...i think i must use networkview commands but I have no idea how...Can you help me?

parts of my code:

var life=100;
[...start and update functions here...]
@RPC
function ApplyDamage(damage:int) {
    if (life<=0) {
        life=0;
        Network.Destroy(gameObject);
    }else {
        life-=1;
    }
}
    function OnGUI() {
    GUI.Label(Rect(100,100,100,100),"LIFE "+life);
}

Comment

People who like this

0 Show 0
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

2 Replies

· Add your reply
  • Sort: 
avatar image
Best Answer

Answer by Henrique · Jan 06, 2011 at 12:20 PM

Sorry...I've Solved!

if (networkView.isMine) {
GUI.Label(Rect(100,100,100,100),"LIFE "+life);
}

Thanks!

Comment

People who like this

0 Show 0 · 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
Best Answer

Answer by PrimeDerektive · Jan 06, 2011 at 01:40 PM

Just as an FYI, instead of having to pepper all your scripts randomly with network conditions like "Network.IsServer", "Network.IsClient", and "networkView.IsMine", its useful to do a "network initialization" script for any objects that will be Network.Instantiated.

For example, in your case, you might use a script called "PlayerNetworkInit" that did something like this (for the sake of argument, I'm assuming the name of this health script is PlayerHealth):

PlayerNetworkInit.js:

function OnNetworkInstantiate(info : NetworkMessageInfo){
    if(!networkView.IsMine){
        GetComponent(FPSWalker).enabled = false;
        GetComponent(PlayerHealth).enabled = false;
    }
}

This way, you can manage all the code that you want running on remote instances of this object (instances of this object running on clients that don't own it) from one place.

The beautiful thing about RPC's is you can call an RPC on an object even if the script that contains that RPC function is disabled (so in your case, you can disable the PlayerHealth script on all player objects that the current player doesn't own on the network, so it won't show the GUI code, but you can still send the ApplyDamage RPC message on them).

Comment
Henrique

People who like this

1 Show 0 · 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

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.

Welcome to Unity Answers

If you’re new to Unity Answers, please check our User Guide to help you navigate through our website and refer to our FAQ for more information.

Before posting, make sure to check out our Knowledge Base for commonly asked Unity questions.

Check our Moderator Guidelines if you’re a new moderator and want to work together in an effort to improve Unity Answers and support our users.

Follow this Question

Answers Answers and Comments

No one has followed this question yet.

Related Questions

How would you set up a Lobby Scene? 1 Answer

network GUI not working 1 Answer

How to spawn player after clicking: Connect 0 Answers

How to load all character previously in game when new player joins 0 Answers

Help|sync movement in multiplayer 1 Answer


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