Update sizes only when changed?
I submitted the update to the asset store, it will be available soon
- Edited
Hi, I have a similar issue, where I add and remove ResponsiveContainer child components.
Don't know if this helps but I made these changes that currently solves my issue.
and also prevents continuous Resize() update calls.
Update to ResponsiveItem.cs
[ExecuteAlways]
public class ResponsiveItem : MonoBehaviour
{
public ResponsiveContainer.ResponsiveItemData settings;
private void OnEnable()
{
InvokeParentsOnTransformChildrenChanged();
}
private void OnDisable()
{
InvokeParentsOnTransformChildrenChanged();
}
private void OnRectTransformDimensionsChange()
{
InvokeParentsOnTransformChildrenChanged();
}
private void InvokeParentsOnTransformChildrenChanged()
{
var containers = GetComponentsInParent<ResponsiveContainer>();
foreach (var container in containers)
{
container.OnTransformChildrenChanged();
}
}
}
Update to ResponsiveContainer.cs (line 52 to 71) in v1.0.2
void Start()
{
Init();
Resize(!Application.isPlaying);
}
private bool transformChildrenChanged;
public void OnTransformChildrenChanged()
{
if (container != null)
{
activeChildren = GetChildrenFirstDepth(container);
activeChildCount = activeChildren.Count;
}
transformChildrenChanged = true;
}
/// <summary>
/// Initialize the component
/// </summary>
private void Init()
{
container = GetComponent<RectTransform>();
activeChildren = GetChildrenFirstDepth(container);
activeChildCount = activeChildren.Count;
}
void Update()
{
if (!transformChildrenChanged)
return;
transformChildrenChanged = false;
// Force resize only when not playing
Resize(!Application.isPlaying);
}
Oh. PS.
I added a "Assembly Definition" - Exoa.Responsive.asmdef to the Exoa -> ResponsiveUI root folder.
this was required to add it as a Assembly Definition Reference in one of my project files that also has it's own Assembly Definition.
Anthony, Sorry for the delay... I tried to install the latest version 1.0.2. After import, I could not find the changes related to
"Improved performances with different refresh settings (On Change/On Rate/On Update/Manual)"
There were only 2 file changes. The one script file that changed was ResponsiveContainer.cs, and it just had to lines changed. The other change was for Demo_Fit_Expand.unity.meta, a GUID change.
Anthony, Sorry for the delay... I tried to install the latest version 1.0.2. After import, I could not find the changes related to
"Improved performances with different refresh settings (On Change/On Rate/On Update/Manual)"
There were only 2 file changes. The one script file that changed was ResponsiveContainer.cs, and it just had to lines changed. The other change was for Demo_Fit_Expand.unity.meta, a GUID change.
Anthony , Sorry for the delay... I tried to install the latest version 1.0.2. After import, I could not find the changes related to
"Improved performances with different refresh settings (On Change/On Rate/On Update/Manual)"
There were only 2 file changes. The one script file that changed was ResponsiveContainer.cs, and it just had to lines changed. The other change was for Demo_Fit_Expand.unity.meta, a GUID change.
dtappe Do you see this code inside your version of Responsive Container ?
[Header("REFRESH")]
public RefreshType refreshType;
public enum RefreshType { OnChange, OnRate, OnUpdate, Manual };
public float refreshRate = 1f;
private float lastRefresh;
private float lastRefreshChangeValue;
If you do you should see a REFRESH section on any responsive container component in the inspector. If you don't I could have screwed the update on the asset store.
Let me know thanks!