Dla wielu programistów wyzwaniem podstawowym adaptacji do skryptowania Roblox jest znaczenie lokalizacji pliku i właściwości Script.RunContext.W zależności od wpisywaćskryptu, lokalizacji w przeglądarce i kontekstu wykonania skrypty mogą zachowywać się bardzo różnie.Niektóre wezwania metod mogą nie powodzić się, obiekty w twoim doświadczeniu mogą być niedostępne lub skrypty mogą w ogóle nie wszystko.
Powodem tej złożoności jest to, że doświadczenia Roblox są domyślnie wieloosobowe.Skrypty muszą mieć możliwość uruchamiania tylko na serwerze, uruchamiania tylko na klientzie lub dzielenia się obu stronami.Ewolucja platformy Roblox z czasem jeszcze bardziej skomplikowała sytuację.
Typy skryptów
Roblox ma trzy rodzaje skryptów:
- Script - Kod, który uruchamia się na serwerze lub klientzie, w zależności od jego lokalizacji i właściwości Script.RunContext.
- LocalScript - Kod, który uruchamia się tylko na klientzie. Nie ma kontekstu uruchamiania.
- ModuleScript - Kod, który możesz ponownie użyć w innych skryptach. Nie ma kontekstu wykonania.
Gdy tworzysz Script, jego domyślny kontekst wykonania to Legacy, co oznacza, że jest a) skryptem stronowym i b) uruchamiany tylko wtedy, gdy znajduje się w kontenerze serwera, takim jak Workspace lub ServerScriptService .
- Jeśli zmienisz kontekst wykonania skryptu na Server, może teraz uruchomić się również w ReplicatedStorage, ale nie jest to zalecane.Treść tej lokalizacji jest replikowana do klientów, więc jest to słaba lokalizacja dla skryptów stron serwera.
- Jeśli zmienisz kontekst wykonania skryptu na Client, może on uruchomić się w ReplicatedStorage.Może także działać w StarterCharacterScripts i StarterPlayerScripts.Jednak kontenery startowe są kopiowane do klientów, więc oryginalny skrypt i kopiowany jest, co nie jest pożądane.
Aby zmienić kontekst wykonania skryptu, wybierz go w oknie Eksploratora i zmień wartość w oknie Właściwości.

Rekomendacje
Używanie Server i Client wartości dla RunContext usuwa niejasność w sposobie uruchamiania skryptów i może pomóc utrzymać organizację projektu.Najlepsze przypadki użycia dla nie domyślnych wartości RunContext są:
- Skrypty klienta, które chcesz uruchomić z ReplicatedStorage lub ReplicatedFirst.
Aby udostępnić kod między skryptami serwera i klienta, użyj ModuleScripts w ReplicatedStorage.
Użyj LocalScripts w StarterCharacterScripts, StarterPlayerScripts, StarterGui i StarterPack.
Lokalizacje skryptów
Lokalizacja | Opis: --- | :--- Przestrzeń robocza | Reprezentuje świat gry.Ta lokalizacja działa dobrze dla skryptów serwerowych, które bezpośrednio przymocowują się do obiektów i kontrolują ich zachowanie.ReplicatedFirst | Zawiera obiekty, które replikują się do klienta przed wszystkim innym.Ta lokalizacja jest idealna dla absolutnego minimum zestawu obiektów i skryptów klienta niezbędnych do wyświetlenia ekranu ładowania.ReplicatedStorage | Zawiera obiekty, które są replikowane zarówno dla klienta, jak i serwera.Ta lokalizacja jest idealna dla Class.ModuleScript\|ModuleScripts, którą chcesz używać zarówno na serwerze, jak i na klientzie.Class.LocalScript\|LocalScripts nie uciekaj z tej lokalizacji, ale Class.Script\|Scripts z kontekstem wykonania Client uczyni.ServerScriptService | Zawiera skrypty serwera.To położenie jest idealne dla skryptów, które muszą uzyskać dostęp do funkcjonalności po stronie serwera lub obiektów, takich jak logika gry i przechowywanie w chmurze.ServerStorage | Zawiera obiekty po stronie serwera.Ta lokalizacja jest idealna dla dużych obiektów, które nie muszą być od razu replikowane do klientów, gdy dołączają do doświadczenia.Skrypty nie uruchamiają się z tej lokalizacji, ale możesz tutaj przechować stronę serwera Class.ModuleScript\|ModuleScripts.StarterPlayer.StarterCharacterScripts | Zawiera Class.LocalScript\|LocalScripts, które uruchamiają się, gdy pojawia się postać.StarterPlayer.StarterPlayerScripts | Zawiera ogólnego przeznaczenia Class.LocalScript\|LocalScripts, który uruchamia się, gdy gracz dołącza do doświadczenia.StarterGui | Zawiera elementy interfejsu, które klient wyświetla, gdy ładować grę.Class.LocalScript\|LocalScripts może uciec z tej lokalizacji.Ta lokalizacja jest idealna dla skryptów, które modyfikują interfejs użytkownika gry, takich jak dodawanie przycisków, menu i wyskakujących okienek.Pakiet startowy | Zawiera ogólnie tylko Class.Tool\|Tools, ale może również zawierać Class.LocalScript\|LocalScripts do ustawienia plecaków graczy.
Ta ilustracja pokazuje, które lokalizacje okien Explorera mogą zawierać skrypty klienta.Pamiętaj, że i mogą zawierać z , podczas gdy kontenery powinny używać .

Przykładowa struktura projektu
Projekt referencyjny rośliny pokazuje, jak możesz zorganizować swój kod w dużym, złożonym doświadczeniu.
Szczególnie warte odnotowania jest to, jak przechowuje znaczną większość swojego kodu jako ponownie używalnego ModuleScripts w ReplicatedStorage i ServerStorage.