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.


Zobrazeno 17 zpráv z 17.
K personalizaci obsahu a reklam, poskytování funkcí sociálních médií a analýze naší návštěvnosti využíváme soubory cookie. Informace o tom, jak náš web používáte, sdílíme se svými partnery pro sociální média, inzerci a analýzy. Partneři tyto údaje mohou zkombinovat s dalšími informacemi, které jste jim poskytli nebo které získali v důsledku toho, že používáte jejich služby.
Používáme nezbytné cookies pro fungování webu a s tvým souhlasem také analytické a marketingové cookies.
Zajišťují základní funkce, bezpečnost a služby, které sis vyžádal. Nelze je vypnout.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| ITnetwork | ITnetwork | Provoz webu, relace, přihlášení a uložení nastavení cookies. | PHPSESSID, auth_token, sid, itn_consent_impression, __Host-itn_consent | Relace až 1 rok |
| Google Tag Manager | Správa značek a načítání měřicích nástrojů webu. | Žádné | Neukládá se | |
| Google Fonts | Načítání typografie webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google Hosted Libraries | Načítání potřebných knihoven a stylů webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google reCAPTCHA | Ochrana formulářů a webu před zneužitím. | _GRECAPTCHA, rc::a, rc::b, rc::c, rc::f | Relace až 180 dní | |
| YouTube | Přehrávání vloženého video obsahu. | localStorage, IndexedDB; cookies after playback interaction | Relace až trvalé úložiště | |
| Vimeo | Vimeo | Přehrávání vloženého video obsahu. | __cf_bm, _cfuvid, vuid, localStorage, IndexedDB | Relace až 2 roky |
| Facebook Login | Meta | Přihlášení pomocí účtu třetí strany. | Úložiště řízené poskytovatelem | Relace až 1 rok |
| GoPay | GoPay | Zpracování uživatelem vyžádané platby. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
Pomáhají nám porozumět používání webu a zlepšovat ho.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Analytics 4 | Měření návštěvnosti a používání webu. | _ga, _ga_* | Až 2 roky | |
| Microsoft Clarity | Microsoft | Měření návštěvnosti a používání webu. | _clck, _clsk, _cltk | Relace až 1 rok |
Slouží k měření kampaní, personalizaci reklamy a marketingové komunikaci.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Ads | Měření kampaní, reklama a remarketing. | _gcl_au, _gcl_ls | Relace až 90 dní | |
| Meta Pixel | Meta | Měření kampaní, reklama a remarketing. | _fbp, _fbc, localStorage | Až 90 dní |
| Sklik | Seznam.cz | Měření kampaní, reklama a remarketing. | retargeting, sid, szn:* | Relace až trvalé úložiště |
| LinkedIn Insight | Měření kampaní, reklama a remarketing. | bcookie, li_gc, lidc, __cf_bm | Relace až 1 rok | |
| Ecomail | Ecomail.cz | Měření kampaní, reklama a remarketing. | ecmid, Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
| Atribuce kampaní ITnetwork | ITnetwork | Přiřazení návštěvy a objednávky ke kampani. | campaign_clid[*], user_session_context | Až 1 rok |
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.