Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 13 Next capture
2021 2022 2023
1 capture
13 Jun 22 - 13 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 /
avatar image
0
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
Add comment
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
1
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
Add comment · 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
0
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
Add comment · 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.

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

Networking-multplayer issue 1 Answer

Network.Connections 1 Answer

Changing the custom master servers default port ? 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