NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: Návrhy na zlepšení zdrojových kódů C# (Unity3d)

V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
dez1nd
Člen
Avatar
dez1nd:21.9.2017 13:24

Lidičky chtěl jsem se zeptat, byla by možnost sem nahrávat různé scripty ze svého projektu a získat zpětnou vazbu od někoho kdo ovládá C# ? Na základě těchto faktů byl dělal refactoring svých zdrojáků. Sice vždy dospěju k tomu co chci udělat, ale vždy je lepší cesta jak k tomu dospět. A touto cestou bych se chtěl zdokonalit, protože opakováním chyb nebo jejich opisováním z video tutoriálů se toho moc nenaučím.

 
Odpovědět
21.9.2017 13:24
Avatar
Petr Nymsa
Tvůrce
Avatar
Odpovídá na dez1nd
Petr Nymsa:21.9.2017 15:16

Dost záleží na velikosti a množství zdrojových kódů. Klidně můžeš nějaké menší konkrétní celky poslat sem do tohoto vlákna ;). Ale nějaké speciální fórum pro "refaktoring" tady nevedeme.
Taky ti nikdo neudělá refaktor celé aplikace. Pošli sem nějaké izolované třídy / whatever a můžeme se na to podívat.

Nahoru Odpovědět
21.9.2017 15:16
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
Petr Čech
Tvůrce
Avatar
Odpovídá na dez1nd
Petr Čech:21.9.2017 16:33

Nevím, jestli by se našel někdo ochoten tím procházet - normálně by za to člověk, co umí C# na úrovni, při které může slušně kritizovat, bral těžké peníze...

Nahoru Odpovědět
21.9.2017 16:33
the cake is a lie
Avatar
dez1nd
Člen
Avatar
dez1nd:21.9.2017 18:53

nemyslel jsem to tak, že někdo udělá refactoring za mě. Hned jak budu moct, postnu sem nějaký script ;)

 
Nahoru Odpovědět
21.9.2017 18:53
Avatar
Odpovídá na Petr Čech
Marian Benčat:21.9.2017 19:04

já mám také těžké peníze a na to, něco zkritizovat si vždycky rád čas najdu :D

Editováno 21.9.2017 19:04
Nahoru Odpovědět
21.9.2017 19:04
Totalitní admini..
Avatar
Petr Čech
Tvůrce
Avatar
Odpovídá na Marian Benčat
Petr Čech:21.9.2017 20:49

Tak jasně, měl jsem na mysli profi kritiku - nebude mi vadit, když třeba člověku vytknu styl jakým píše kód - nedodržování standardů, žádná dokumentace (ani jako komentáře), čeština...
Ale myslím, že autor vlákna má na mysli spíš něco komplexnějšího jako třeba úpravu struktury, přesouvání funkcionality a pod - prostě refactoring. A to už je něco, co by mě třeba vůbec nebavilo, kdyby mi za to nebylo hezky placeno.
PS: vím, že jsem materialista

Nahoru Odpovědět
21.9.2017 20:49
the cake is a lie
Avatar
Odpovídá na Petr Čech
Marian Benčat:22.9.2017 0:10

NJN, problém těch věcí je, že téměř vždy jsou ovlivněny projektem samotným.. "there is no best thing". Takže pokud má být taková rada skutečně kvalitní, tak je to na pár hodin, či dní :-) Od toho jsme už skutečně ale dobře placeni :-)

Nahoru Odpovědět
22.9.2017 0:10
Totalitní admini..
Avatar
Neaktivní uživatel:22.9.2017 11:46

Nahraj to do veřejného repozitáře a pošli to sem, třeba se někdo najde.

Nahoru Odpovědět
22.9.2017 11:46
Neaktivní uživatelský účet
Avatar
dez1nd
Člen
Avatar
dez1nd:22.9.2017 12:20

Tak třeba Camera_Controller

+using System.Collections;

+using System.Collections.Generic;

+using UnityEngine;

+

+/**

+ * Script pro pohled prvni osoby

+ * pripojit k hlavni kamere

+ * spravne umisteni hrac/pivot/kamera

+ */

+

+public class Camera_Controller: MonoBehaviour {

+

+    Transform pivot; // pivot pro mireni nahoru/dolu

+    Transform player; // aby se otacel cely hrac do stran potrebujeme ho taky

+

+    float maxCamPitch = 70f;

+    float minCamPitch = -70f;

+    float currentPitch;

+    public float mouseSensitivity = 200f;

+    float playerRotation;

+

+       // Use this for initialization

+       void Start ()

+    {

+        pivot = transform.transform.parent.transform;

+        player = transform.transform.parent.parent.transform;

+       }

+

+       // Update is called once per frame

+       void Update () {

+

+        currentPitch -= Input.GetAxis("Mouse Y") * mouseSensitivity * Time.deltaTime;

+        currentPitch = Mathf.Clamp(currentPitch, minCamPitch, maxCamPitch);

+        pivot.localRotation = Quaternion.AngleAxis(currentPitch, Vector3.right);

+

+        playerRotation += Input.GetAxis("Mouse X") * mouseSensitivity * Time.deltaTime;

+        player.localRotation = Quaternion.AngleAxis(playerRotation, Vector3.up);

+    }

+}

nebo Player_Controller

public class Player_Controller : MonoBehaviour {

+

+    Transform player;

+    Vector3 moveDirection;

+    float movementSpeed = 7f;

+

+       // Use this for initialization

+       void Start () {

+

+        player = transform;

+

+       }

+

+    // Update is called once per frame

+    void Update()

+    {

+        moveDirection = new Vector3(Input.GetAxis("Horizontal") * movementSpeed * Time.deltaTime, 0, Input.GetAxis("Vertical") * movementSpeed * Time.deltaTime);

+        // moveDirection = transform.TransformDirection(moveDirection);

+        player.Translate(moveDirection);

+    }

+}
 
Nahoru Odpovědět
22.9.2017 12:20
Avatar
dez1nd
Člen
Avatar
dez1nd:22.9.2017 12:25

sorry už to nejde editovat, než jsem to stil vypršel limit

 
Nahoru Odpovědět
22.9.2017 12:25
Avatar
Odpovídá na dez1nd
Neaktivní uživatel:22.9.2017 13:09

Ta kombinace PascalCase a snake_case je teda dost hrozná...
Jinak se mně osobně teda nezdá, že by toho kódu bylo dost na nějakou větší kritiku.

Nahoru Odpovědět
22.9.2017 13:09
Neaktivní uživatelský účet
Avatar
Marian Benčat:22.9.2017 13:19

Bez kompletních zdrojáků to vůbec nemá smysl se na to dívat..Už todle strašně smrdí průserem:

 void Start ()

+    {

+        pivot = transform.transform.parent.transform;

+        player = transform.transform.parent.parent.transform;

+       }
Nahoru Odpovědět
22.9.2017 13:19
Totalitní admini..
Avatar
Odpovídá na Marian Benčat
Marian Benčat:22.9.2017 13:23

Takto "šplhat po scéně" v 95% značí, že do inputu toho scriptu šoupeš věci, co bys tam šoupat neměl a nešoupeš, co bys šoupat měl ;-) Změní ti někdo uspořádání ve scéně a budeš v hajzlu přesto, že jsi v kódu nic nezměnil..

Editováno 22.9.2017 13:25
Nahoru Odpovědět
22.9.2017 13:23
Totalitní admini..
Avatar
dez1nd
Člen
Avatar
Odpovídá na Marian Benčat
dez1nd:22.9.2017 13:34

A jak toto zabezpečit, pokud se potřebuju dostat z kamery která je v Player/Pivot/Camera na jejího paranta a grandparenta ? hledat dle jména je stejná blbost, protože ho někdo potom přejmenuje/smaže a jsem v háji, jediná možnost mě napadá že do scriptu zakomponovat funkci aby objekt Player zbavila všech child objektů a vytvořila je znova.

 
Nahoru Odpovědět
22.9.2017 13:34
Avatar
Marian Benčat:22.9.2017 14:31

No tak předmě by mě zajímalo, proč potřebuješ playera...

Popravdě by mě zajímalo, proč potřebuješ ten pivot.. ten by dával smysl třeba u nějakého pohybu, co je závislý třeba na ruce...

Kamerou chceš hýbat na základě pozice Playera.. takže bys měl mít ten CameraController a jemu předat jako Input (v Unity je to defakto public proměnná) gameobject hráče samotného..

https://unity3d.com/…layer-camera

Nahoru Odpovědět
22.9.2017 14:31
Totalitní admini..
Avatar
Marian Benčat:22.9.2017 14:58

Chtěl jsem říci, že buďto potřebuješ z nějakého mně nevysvětlitelného důvodu pivot, nebo playera.. Ale ne Playera, ke kterému se dostaneš přes pivot.

Nahoru Odpovědět
22.9.2017 14:58
Totalitní admini..
Avatar
dez1nd
Člen
Avatar
Odpovídá na Marian Benčat
dez1nd:22.9.2017 18:38

Nedal jsem veřejného playera, protože ho nechci přiřazovat ručně, chci si ho najít přes kód.
Potřebuju se dostat k objektu player protože s ním otáčím pomocí osy Mouse X.
Pivot je k tomu abych mohl mířit kamerou podle osy Mouse Y, zároveň s kamerou je v pivotu weapon handler.

 
Nahoru Odpovědět
22.9.2017 18:38
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 17 zpráv z 17.