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.
Člen
Zobrazeno 17 zpráv z 17.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
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.
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...
já mám také těžké peníze a na to, něco zkritizovat si vždycky rád čas najdu
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
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
Nahraj to do veřejného repozitáře a pošli to sem, třeba se někdo najde.
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);
+ }
+}
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.
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;
+ }
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..
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.
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..
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.
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.
Zobrazeno 17 zpráv z 17.