The supplied API uses the WaterCryo<T> reactive system — set .value and the shader updates automatically.

Runtime API Examples
var water = GetComponent<ModernWater2D>();

// Change water color
water.settings._waterSettings.color.value = Color.blue;

// Change foam speed
water.settings._waterSettings.foamSpeed.value = new Vector2(0.5f, 0.1f);

// Toggle reflections
water.enableReflections.value = false;

// Switch render mode
water.renderMode = WaterRenderMode.Tilemap;
water.ApplyRenderMode();

// Access the active material
water.ActiveSharedMaterial.SetFloat("_surfaceAlpha", 0.5f);

Key Access Paths

PathWhat It Does
water.ActiveSharedMaterialShared material on whichever renderer is active.
water.ActiveRendererActive Renderer (SpriteRenderer or TilemapRenderer).
water.ActiveBoundsWorld-space bounds of the active renderer.
water.IsTilemapMode / IsSpriteModeCheck current render mode.
water.settings._waterSettingsVisual settings (color, foam, distortion, etc).
water.settings._reflectionsSettingsReflection settings.
water.settings._simulationSettingsSimulation settings.